■寫在前頭:
爬取有非同步載入頁的時資訊時,要理解其原理才是最重要的。
帶ajax頁因為一次獲取不到,所以要想辦法摸擬出ajax非同步效果,得到返回資料,再分析,最終才能得到想要的結果。
■所需import 包
import requests
from lxml import etree
# -*- coding: utf-8 -*-關鍵點在於importscrapy
importrequests
fromlxmlimportetreeclassfindallnamespider(scrapy.spider)
:name='findallname'
start_urls= ['']defparse(
self, response)
:jumpurl=response.xpath(
"//div[@class='g_bichan']/div[1]/a/@href").extract_first()
('1【【【jumpurl is : '+jumpurl+'】】】')
yieldscrapy.request(response.urljoin(jumpurl), callback
=self.parse2)
defparse2(
self, response)
:
info
={}
page1url="***/shop/queryshopproduct.html?ran=0.7350681925523111"param="&shopid=018&pageno=1&order=1&ordertype=2&showtype=1"r=requests.get(page1url+param).text
selector=etree.html(r)
forlevel1sinselector.xpath(
"//div[@class='g_shoujinwyy']/div[normalize-space(@class='g_tuijianyue')]")
:info=print
(info['productdescript'])
(info['price'])
1 request.get(url).text
意思是從url取得對向的text
2 selector = etree.html(r)
意思是將text對向轉為html物件。因為html物件xpath遍歷要比str物件的擷取容易操作得多,所以此處轉成xtml對像,當然,為了方便操作還有beautifulsoap對像等等。
3 ajax訪問的url及引數,可以在chrome的network標籤下獲得。
乙個用於踩點獲取資訊的python指令碼
哎,總算是可以滿足要求了。例項化物件之後,直接就可以獲得物件的 ip whois資訊 dns whois資訊。主機頭資訊等等。for com,net字尾的網域名稱 s.connect whois.internic.net 43 for org 字尾的網域名稱 s.connect whois.publ...
非同步Socket通訊的乙個簡單示例
最近要抓緊時間做talk!專案,看到網上有個簡單非同步通訊的例子,可惜是用vb寫的,我把它用c 改寫了一遍,加了點小功能。語言 c 軟體 vs.2003 傳送端 private void button1 click object sender,system.eventargs e 接受端 publi...
乙個簡單的爬蟲專案(爬取小說)
1.工具介紹 1.1我們所需要用到第三方庫 requests 爬蟲所需要的最基本的第三方庫 re 正規表示式 1.2安裝的方式 pip install requests pip install re 1.3匯入第三方庫的方式 import requests import re 2.詳細 介紹首先請求...