模拟登陆问题

来源:4-8 . cnblogs模拟登录(新增内容)

宝慕林4168432

2021-10-02

Booby老师,请问设置模拟登陆之后,进行debug操作总是报错是为什么?图片描述
图片描述

写回答

2回答

bobby

2021-10-08

from urllib import parse
import re
import json

import scrapy
import undetected_chromedriver
from scrapy import Request
import requests

class JobboleSpider(scrapy.Spider):
    name = 'jobbole3'
    allowed_domains = ['news.cnblogs.com']
    start_urls = ['http://news.cnblogs.com/']
    custom_settings = {
        "COOKIES_ENABLED": True
    }

    def start_requests(self):
        # 入口可以模拟登录拿到cookie,selenium控制浏览器会被一些网站识别,eg:知乎,拉勾
        import undetected_chromedriver.v2 as uc  # 后面讲解selenium的时候,会下载chromedriver.exe
        browser = uc.Chrome()
        browser.get("https://account.cnblogs.com/signin")
        # 自动化输入,自动化识别滑动验证码并拖动整个自动化过程都会
        input("请回车继续:")
        cookies = browser.get_cookies()
        cookie_dict = {}
        for cookie in cookies:
            cookie_dict[cookie['name']] = cookie['value']
        for url in self.start_urls:
            # 将cookie交给scrapy,那么后续的请求会沿用之前请求的cookie吗?
            headers = {
                'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'
            }
            yield scrapy.Request(url, cookies=cookie_dict, headers=headers, dont_filter=True)

    def parse(self, response):
        # 1.获取新闻列表页中的新闻URL,并交给scrapy进行下载后调用相应的解析方法
        # 2.获取下一页的URL并交给scrapy进行下载,下载完成后交给parse继续跟进

        # url = response.xpath('//*[@id="entry_703324"]/div[2]/h2/a/@href').extract_first("")
        # url = response.xpath('//div[@id="news_list"]//h2[@class="news_entry"]/a/@href').extract()
        url = response.css('div#news_list h2 a::attr(href)').extract()
        pass

这个代码我运行了没有问题,你的chrome版本是多少? 我本地的chrome是最新的版本 94.0.4606.54

0
8
bobby
回复
慕尼黑5412379
加你了
2021-11-18
共8条回复

bobby

2021-10-03

你把你的cnblog的代码贴一下我看看

0
5
宝慕林4168432
def parse(self, response): # 1.获取新闻列表页中的新闻URL,并交给scrapy进行下载后调用相应的解析方法 # 2.获取下一页的URL并交给scrapy进行下载,下载完成后交给parse继续跟进 # url = response.xpath('//*[@id="entry_703324"]/div[2]/h2/a/@href').extract_first("") # url = response.xpath('//div[@id="news_list"]//h2[@class="news_entry"]/a/@href').extract() url = response.css('div#news_list h2 a::attr(href)').extract() pass
2021-10-06
共5条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5795 学习 · 6290 问题

查看课程