请稍等 ...
×

采纳答案成功!

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

我的爬虫只能爬少量信息

老师,您好!

我做爬取知乎和拉勾网信息的练习时,有一个问题:

1.问题出现在爬取知乎网的时候:
用selenium模拟登录知乎后,我得到知乎首页的response,开始爬取,然后,我只能爬到6条问题的url,如下代码截图,但知乎首页的问题的url一定不止是6条。
zhihu

2.问题出现在爬取拉勾网的时候:
用crawl爬取拉勾时,我配置的rule如下:

 rules = (
        Rule(LinkExtractor(allow=("zhaopin/Python/.*",)),callback='parse_job'),
    )
    
    def parse_job(self, response):
        myItemLoader = ItemLoader(item=LagouItem(), response=response)
        myItemLoader.add_css("title", ".p_top h3::text")
        myItemLoader.add_css("address", ".p_top span.add em::text")
        myItemLoader.add_css("salary", ".p_bot span::text")
        myItemLoader.add_css("company", ".company_name a::text")
        myItem = myItemLoader.load_item()
        # 第一次得到的item是一个个列表,titlelist,addresslist,salarylist和companylist
        list_title = myItem["title"]
        list_address = myItem["address"]
        list_salary = myItem["salary"]
        list_company = myItem["company"]
        # 再创建第二个item2,每次循环都yield出去,让pipeline执行保存,这样就可以做到一一对应地保存职位信息
        num = len(list_title)
        myItem2 = LagouItem()
        for i in range(num):
            myItem2["title"] = list_title[i]
            myItem2["address"] = list_address[i]
            myItem2["salary"] = list_salary[i]
            myItem2["company"] = list_company[i]
            yield myItem2

我在parse_job里面用Itemloader对item进行爬取和加载,但只能得到15条信息。
不管是存到mysql, csv或者json文件中,都只有15条job信息。

老师,您比较有经验,知道这是哪里的问题吗?
谢谢!

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

1回答

bobby 2019-05-28 17:10:21

如果数据不够 你就需要看看pycharm的console中 是不是有些url返回的状态码不是200?而是302? 你截图我看看呢

0 回复 有任何疑惑可以回复我~
  • 提问者 Xiaoyu_Wu #1
    老师,您好! 
    
    感谢您的回复。
    爬取知乎时,
    当我用selenium模拟登录后,跳到parse(self, response)方法时,用css选择器来爬取页面中问题的url,                   
    “all_urls = response.css('div[itemprop="zhihu:question"] meta[itemprop="url"]::attr(content)').extract()”                  
    此时,我总是只能得到6个问题的url,但您知道,知乎首页的问题的url是很多的,不止6个。
    
    在我还没把得到的url yield出去时,就只有6个,所以,不是url返回状态的问题。而且,它们的返回状态也都是200.
    
    老师,不知能看明白我所表达的意思不?
    不是有些url返回状态是302,都是200.
    回复 有任何疑惑可以回复我~ 2019-05-28 22:56:43
  • 提问者 Xiaoyu_Wu #2
    老师,您好!
    
    为了更好地表达问题,我修改了原问题,插入了爬取知乎的代码的调试截图,麻烦您再看看。
    
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-05-28 23:08:35
  • bobby 回复 提问者 Xiaoyu_Wu #3
    你留下qq 我加你 看看具体的问题
    回复 有任何疑惑可以回复我~ 2019-05-30 12:35:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信