scrapy selenium動態抓取

2021-09-25 10:25:39 字數 2895 閱讀 1618

1、middleware.py檔案配置

# 瀏覽器不提供視覺化頁面. linux下如果系統不支援視覺化不加這條會啟動失敗

chrome_options.add_argument('--headless')

# 谷歌文件提到需要加上這個屬性來規避bu

chrome_options.add_argument('--disable-gpu')

# root使用者不加這條會無法執行

chrome_options.add_argument('--no-sandbox') # root使用者不加這條會無法執行

# 例項化瀏覽器物件

# browser = webdriver.chrome(executable_path='/users/admin/downloads/chromedriver', options=chrome_options)

browser = webdriver.chrome(options=chrome_options)

browser.get(request.url)

time.sleep(3)

return htmlresponse(url=browser.current_url, body=browser.page_source, encoding="utf-8", request=request)

**這裡要考慮谷歌瀏覽器和chromdriver相容性,網上都有對應的版本號2、settings.py配置

**********_middlewares =
3、示例**(國家食藥監局資料抓取為例)

# -*- coding: utf-8 -*-

import scrapy

from logging import getlogger

from sysj.items import sysjitem

logger = getlogger('spider')

class zongjusphgspider(scrapy.spider):

"""總局合格食品

"""# 爬蟲名

name = 'zongju_sp_hg'

# 網域名稱

allowed_domains = ['samr.cfda.gov.cn']

# 翻頁url

start_urls = [

'國家食品安全監督抽檢(合格產品)&state=1&cid=0&state=1&ytableid=0&state=1&searchtype=search&state=1']

# 詳情頁url

start_urls1 = [

'國家食品安全監督抽檢(合格產品)&id=%s']

# 傳送請求

def start_requests(self):

for i in range(1, 11721):

# print(i)

url = self.start_urls[0]

try:

yield scrapy.request(

url % i,

# headers=headers,

callback=self.parse,

dont_filter=true

)except exception as e:

logger.error(e)

def parse(self, response):

# print(type(response))

list_num = response.xpath("//a")

for i in list_num:

href_url = i.xpath("./@href").extract()[0].split('=')[-1].split("'")[0]

# print(href_url)

url = self.start_urls1[0] % href_url

try:

yield scrapy.request(

url,

# headers=headers,

callback=self.parse_details,

dont_filter=true

)except exception as e:

logger.error(e)

def parse_details(self, response):

item = sysjitem()

# 企業名稱

try:

item['company_name'] = response.xpath("//div[@class='listmain']//tr[2]/td[2]/text()").extract()[0]

# print(item['company_name'])

except:

item['company_name'] = ''

…………

scrapy selenium爬去京東動態網頁

使用scrapy爬取京東圖書出現問題 京東中部分資料採用js載入生成。造成後果 scrapy爬下來的網頁缺乏一些資訊 需要載入js才能生成 如圖1 圖1京東商品的 不在網頁源 中。解決方法 由於感覺麻煩,沒有使用 2.使用selenium進行渲染,步驟如下 a.在自定義的spider的初始化時,使用...

scrapy selenium速度慢修改

concurrent requests 32 download delay 0.5 concurrent requests per domain 1000000 1.啟動chrome畢竟是圖形化的介面,肯定是會消耗大量記憶體和cpu 2.phantomjs正是一款沒有介面的瀏覽器但是還是同樣能完成瀏...

WPF與緩動 四 弧形緩動

wpf與緩動 四 弧形緩動 周銀輝 弧形緩動就是其緩動曲線為一段圓弧,如何我們假設圓弧上的點的斜率為速度的話,那麼可以想像其速度的變化多麼具有戲劇性,其加速或減速來得很突然,與5次緩動差不多.參考以下 圓形緩動 protected override double getcurrentvaluecor...