使用scrapy爬蟲,爬取今日頭條搜索吉林疫苗新聞(scrapy+selenium+PhantomJS)

這一陣子吉林疫苗案,備受你們關注,索性使用爬蟲來爬取今日頭條搜索吉林疫苗的新聞python

依然使用三件套(scrapy+selenium+PhantomJS)來爬取新聞web

如下是搜索頁面,獲得吉林疫苗的搜索信息,裏面包含了新聞信息和視頻信息json

經過F12中network獲得了接口url信息:https://www.toutiao.com/search_content/?offset=0&format=json&keyword=%E5%90%89%E6%9E%97%E7%96%AB%E8%8B%97&autoload=true&count=20&cur_tab=1&from=search_tabdom

 

在Postman裏面訪問接口信息獲得json信息(信息裏面包含了文章的標題和連接)scrapy

基於這些信息來開發爬蟲核心代碼ide

# -*- coding: utf-8 -*-
import scrapy
from selenium import webdriver
import time
import  json
from toutiao.items import ToutiaoItem

class ToutiaoSerachSpider(scrapy.Spider):
    name = 'toutiao_serach'
    allowed_domains = ['toutiao.com']
   ###接口信息,這裏爲了方便把 &keyword=   挪到了最後邊
    start_urls = ['https://www.toutiao.com/search_content/?offset=0&format=json&autoload=true&count=20&cur_tab=1&from=search_tab&keyword=']

    def parse(self, response):
        new_key_word=response.url+'吉林疫苗'
        yield scrapy.Request(new_key_word,callback=self.main_parse)
        
    def main_parse(self,response):
        search_content_data=json.loads(response.text)
        for aa in  search_content_data['data']:
            if 'open_url' in aa.keys() and 'play_effective_count'not in aa.keys(): ### 去除搜索後獲得的綜合裏面 保留文章信息類型,去除視頻信息類型
                yield scrapy.Request(aa['article_url'],callback=self.content_parse)

    def content_parse(self,response):

        driver = webdriver.PhantomJS()
        driver.get(response.url)  
        time.sleep(3)
        title = driver.find_element_by_class_name('article-title').text
        content=driver.find_element_by_class_name('article-content').text

        item=ToutiaoItem()
        item['title'] =title
        item['content']=content
        
        yield item

最後獲得新聞信息url

相關文章
相關標籤/搜索