蘇寧這些電商的**的資訊比較難爬,這此的**雖然能跑,但是資料並沒有什麼意義。所以只是單純做乙個物件導向爬蟲編碼流程的例子來看就行了
由於資料沒啥意義,我就不分析太多,就給一下**結構
import requests
from lxml import etree
import re
import time
import random
import json
from threading import thread
爬取的顯示器資訊
class suningyigou_xianshiqi:
def __init__(self):
一級頁面的url和header
self.base_url=''
self.headers=
這個是得到第一頁的中的商品的列表頁的html
def get_list_page(self):
html=requests.get(url=self.base_url,headers=self.headers).text
return html
這是得到翻頁後的商品的列表頁html
def get_more_list_page(self,x,y):
url=''+x+'&il=0&st=0&iy=0&isdoufu=1&isnoresult=0&n=1&sesab=acaabaabca&id=identifying&cc=010'+y+'&sub=0&jzq=3350'
headers =
return requests.get(url=url,headers=headers).text
這個方法為了後面做多執行緒傳了頁碼
def get_info(self,j):
設定延遲
delay = random.uniform(3, 6)
time.sleep(delay)
這裡我嘗試用xpath去匹配每頁中的小頁面的商品詳情url資料,由於每個頁碼分成了1,2,3和不寫4個小頁面,所以這裡要多次匹配
html1=etree.html(self.get_list_page())
我這裡並沒能夠使用正則匹配到我要的資料
pat = r'"("'
x=str(j)
y = ''
這裡同樣是用xpath找小頁面中的商品詳情頁的url資料
html2 = etree.html(self.get_more_list_page(x, y))
html_href2 = html2.xpath('//div[@class="res-info"]/div[2]/a/@href')
new_headers =
for i in html_href2:
delay = random.uniform(3, 6)
time.sleep(delay)
拼接請求url
獲得詳情頁html
html_str = requests.get(url=info_page_href, headers=new_headers).text
用正則匹配有用的資料,這裡比較坑,不同產品的頁面不同,xpath無法匹配出來我們的資料,但是有人又說能夠匹配出來,不過建議使用xpath,我這裡的資料沒有辦法轉字典
pat1='(.*?) '
usefulinfo_html_str=re.findall(pattern=pat1,string=html_str)
pat2='>(.*?)
usefulinfo_html_str1 = re.findall(pattern=pat2, string=usefulinfo_html_str[0])
清下列表中的空值
while ' ' in usefulinfo_html_str1:
usefulinfo_html_str1.remove(' ')
while '' in usefulinfo_html_str1:
usefulinfo_html_str1.remove('')
輸出資料
print(usefulinfo_html_str1)
這裡和前面的基本一致
for j in range(1,3):
y='&paging='+str(j)
html2=etree.html(self.get_more_list_page(x,y))
html_href2=html2.xpath('//div[@class="res-info"]/div[2]/a/@href')
new_headers =
for i in html_href2:
delay = random.uniform(3, 6)
time.sleep(delay)
html_str = requests.get(url=info_page_href, headers=new_headers).text
pat1 = '(.*?) '
usefulinfo_html_str3 = re.findall(pattern=pat1, string=html_str)
pat2 = '>(.*?)
usefulinfo_html_str4 = re.findall(pattern=pat2, string=usefulinfo_html_str3[0])
while ' ' in usefulinfo_html_str4:
usefulinfo_html_str1.remove(' ')
while '' in usefulinfo_html_str4:
usefulinfo_html_str1.remove('')
print(usefulinfo_html_str4)
html_href1=html1.xpath('div[@class="res-info"]/div[2]/a/@href')
new_headers =
for i in html_href1:
html_str = requests.get(url=info_page_href, headers=new_headers).text
pat1 = '(.*?) '
usefulinfo_html_str5 = re.findall(pattern=pat1, string=html_str)
pat2 = '>(.*?)
usefulinfo_html_str6 = re.findall(pattern=pat2, string=usefulinfo_html_str5[0])
while ' ' in usefulinfo_html_str6:
usefulinfo_html_str1.remove(' ')
while '' in usefulinfo_html_str6:
usefulinfo_html_str1.remove('')
print(usefulinfo_html_str6)
函式執行入口
結果如圖所示
蘇寧易購爬蟲價格尋找
今天做了乙個關於蘇寧易購的爬蟲,找 規律時花了很多時間,終於做出來了。可以找到唯一乙個檔案 nspcsale 比如我這個是 分析一下url,以每個 為分隔,一次搜尋每串數字 比如上面的 000000000646450414 0070167435 502282 r9011303 0.2你會發現這些數字...
618,新版蘇寧易購APP亮相
內容化經營是這兩年電商平台發展的一大趨勢,無論是短 帶貨還是深度測評,年輕一代消費者的注意程式設計客棧力正在下降,眼光卻越來越挑剔。酒香不怕巷子深 的時代已成為過去時,會吆喝,會帶貨的電商平台才能贏得年輕人的青睞。蘇寧易購當然也不例外,從去年 818 期間推出的帶貨短 頭號買家 到吸引 90 後前來...
蘇寧易購 蘇寧小店將獲4 5億美元增資
techweb 5月20日訊息,蘇寧易購日前對外發布公告稱,為保持蘇寧小店業務的穩定發展,推動蘇寧小店未來戰略的實現,經suning smart life股東協商予以提高資本金投入,suning smart life將再新增發行股份45,000萬股普通股,股東great matrix 蘇寧國際以及g...