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...