乙個簡單的非同步爬取資訊

2021-08-07 17:58:08 字數 2560 閱讀 3415

■寫在前頭:

爬取有非同步載入頁的時資訊時,要理解其原理才是最重要的。

帶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()

print

('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'])

print

(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.詳細 介紹首先請求...