请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

301

老师,我已经用了selinium模拟登陆了,也加了header,还是出现了301错误,该怎么解决啊?

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

import pickle


class LagouSpider(CrawlSpider):
    name = 'lagou'
    allowed_domains = ['www.lagou.com']#不在这个域名下的会被忽略
    start_urls = ['https://www.lagou.com/']
    headers = {
        "HOST": "www.zhihu.com",
        "Referer": "https://www.zhizhu.com",
        'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
    }

    rules = (
        Rule(LinkExtractor(allow=("zhaopin/.*",)),follow=True),
        Rule(LinkExtractor(allow=("gongsi/j\d+.html",)), follow=True),
        Rule(LinkExtractor(allow=r'jobs/\d+.html'), callback='parse_job', follow=True),
    )

    # def parse_start_url(self, response):
    #     return []
    #
    # def process_results(self, response, results):
    #     return results

    def parse_job(self, response):
        #解析拉勾网的职位
        i = {}
        #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
        #i['name'] = response.xpath('//div[@id="name"]').extract()
        #i['description'] = response.xpath('//div[@id="description"]').extract()
        return i


    def start_requests(self):
        #第一次模拟登陆获取cookies用这一段
        from selenium import webdriver
        browser = webdriver.Chrome(executable_path="F:\chromedriver_win32\chromedriver.exe")

        browser.get("https://passport.lagou.com/login/login.html")

        browser.find_element_by_xpath("//form[@class='active']/div[@class='input_item clearfix'][1]/input").send_keys(
            "13736821938")
        browser.find_element_by_xpath("//form[@class='active']/div[@class='input_item clearfix'][2]/input").send_keys("gehongYI88")
        print(10)
        browser.find_element_by_xpath(
            "//form[@class='active']/div[@class='input_item btn_group clearfix']/input").click()
        import time
        time.sleep(10)
        Cookies = browser.get_cookies()
        print(Cookies)
        cookie_dict = {}
        for cookie in Cookies:
            #写入文件
            f = open('F:/Users/hongyi/PycharmProjects/ArticleSpider/cookies/lagou' + cookie['name'] + '.zhihu','wb')
            pickle.dump(cookie,f)
            f.close()
            cookie_dict[cookie['name']] = cookie['value']
        browser.close()

        # #直接从文件中提取保存的cookies
        # cookie_dict = {}
        # root_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), 'cookies')#得到cookies文件夹的路径
        # for root, dirs, files in os.walk(root_dir):#遍历cookies文件夹中的所有文件
        #     for file in files:
        #         with open(os.path.join(root_dir, file), 'rb') as f:
        #             filecontent = pickle.load(f)#load pickle文件
        #             cookie_dict[file.split('.')[0].split('zhihu')[1]] = filecontent['value']#filecontent['value']取出文件内容作为字典的value

        return [scrapy.Request(url=self.start_urls[0],dont_filter=True,cookies=cookie_dict,headers=self.headers)]


正在回答 回答被采纳积分+3

2回答

慕娘6095299 2018-10-17 20:10:07

现在解决了吗? 求分享

0 回复 有任何疑惑可以回复我~
  • bobby #1
    这个是因为拉勾网系统通过ip去限制用户的抓取行为,这个时候可以重启切换路由器切换ip试试
    回复 有任何疑惑可以回复我~ 2018-10-19 17:17:30
  • 慕娘6095299 回复 bobby #2
    老师,拉勾网代码什么时候可以更新一下,模拟登陆,更换IP后还是出现10061的错误。
    回复 有任何疑惑可以回复我~ 2018-10-22 11:43:27
  • bobby 回复 慕娘6095299 #3
    近期在做爬虫课程升级的规划,会将这个考虑进升级计划
    回复 有任何疑惑可以回复我~ 2018-10-25 17:13:22
bobby 2018-01-25 11:45:56

301是重定向 识别为爬虫了 你可以试试重启路由器切换ip看看 拉勾网是通过ip地址进行爬虫识别的

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号