scrapy 动态加载下载数据
配置就开启管道 中间件 之类的
中间件中改动
-
from scrapy.http import HtmlResponse
-
-
-
def process_response(self, request, response, spider):
-
bro = spider.bro
-
if request.url in spider.model_urls:
-
bro.get(request.url)
-
# 滚动加载更多数据
-
# bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
-
-
page_text = bro.page_source
-
new_res = HtmlResponse(url=request.url, body=page_text, encoding='utf-8', request=request)
-
return new_res
-
else:
-
return response
爬虫文件
-
import scrapy
-
from selenium import webdriver
-
from selenium.webdriver.edge.service import Service
-
from middlePro.items import MiddleproItem
-
-
-
class MiddleSpider(scrapy.Spider):
-
name = 'middle'
-
# allowed_domains = ['www.百度.com']
-
start_urls = ['https://news.163.com/']
-
model_urls = []
-
-
def __init__(self):
-
self.ser = Service(r'/Users/xiaodunmeng/Desktop/xiaoproject/shixun/xinscrapy/middlePro/middlePro/msedgedriver')
-
self.bro = webdriver.Edge(service=self.ser)
-
-
def parse(self, response):
-
li_list = response.xpath('//*[@id="index2016_wrap"]/div[2]/div[2]/div[2]/div[2]/div/ul/li')
-
alist = [2, 3]
-
-
for index in alist:
-
model_url = li_list[index].xpath('./a/@href').extract_first()
-
self.model_urls.append(model_url)
-
-
for url in self.model_urls:
-
yield scrapy.Request(url, callback=self.parse_model)
-
-
def parse_model(self, response):
-
div_lsit = response.xpath('//div[@class="ndi_main"]/div')
-
for div in div_lsit:
-
title = div.xpath('./div/div[1]/h3/a/text()').extract_first()
-
new_detail_url = div.xpath('./div/div[1]/h3/a/@href').extract_first()
-
-
item = MiddleproItem()
-
item['title'] = title
-
-
yield scrapy.Request(url=new_detail_url, callback=self.parse_detail, meta={'item': item})
-
-
def parse_detail(self, response):
-
content = response.xpath('//*[@id="content"]/div[2]//text()').extract()
-
content = ''.join(content)
-
item = response.meta['item']
-
item['content'] = content
-
-
yield item
-
-
def closed(self, spider):
-
self.bro.quit()
-
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfigfgc
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13