国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

python爬取返利網中值得買中的數據(v1單線程,非scrapy框架)

2019-11-14 16:55:36
字體:
來源:轉載
供稿:網友

先使用以前的方法將返利網的數據爬取下來,scrapy框架還不熟練,明日再戰scrapy

查找目標數據使用的是beautifulsoup模塊。

1.觀察網頁,尋找規律

打開值得買這塊內容

1>分析數據來源

網頁上的數據分為一打開頁面就存在的數據(源代碼中可以看到的數據),

還有隨著鼠標滑動,動態加載的數據(源代碼中不顯示的數據)。

2>查找規律

加載到最底端后,網頁上面一共有50條相關數據,查看源代碼,發現只有5條數據的源代碼,剩下的數據全部是

動態加載出來的。分析這些動態數據:

F12打開Network這部分,刷新頁面,鼠標不往下滑動時,并沒有出現我們需要的后面的數據,隨著鼠標滑動,

發現兩個可能存有數據的項,發現只有AjaxGetItem...這個是我們所需要的,使用filter過濾一下。

過濾后發現如下規律:

 1-2是第6-10條,1-3是第11-15條......

其他頁也是這個規律,發現第二頁中page參數那部分page=0-2,是從0打頭的,我換成page=2-2后沒有影響

所以規律就是把page部分換成對應的頁數就好了。

2.代碼

找到規律后,就可以寫代碼了。由于使用的是單線程,所以爬數據得到猴年馬月了,太坑了,慚愧,以后慢慢再改進。

知識還是掌握的太少了,接觸到scrapy后,覺得自己對爬蟲這部分知道的仍然是冰山一角,什么深度廣度,

分布式等等都接觸不深,感覺自己太low了,長路漫漫漫,還有覺得scrapy好強,雖然好多用法都不造

 1 # encoding=utf-8 2 import urllib2 3 from bs4 import BeautifulSoup 4 import time 5 # 返利網值得買頁面的源代碼中只包含5條數據, 6 # 其他的數據是動態加載的,每個頁面包含50條數據 7  8 class FanLi(): 9     def __init__(self):10         self.user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'11         self.headers={'User-Agent':self.user_agent}12     def get_url(self):13 14         list_url=[]15         for i in range(1,760):16             # 可內容直接獲取的url117            url1='http://zhide.fanli.com/p'+str(i)18            list_url.append(url1)19            for j in range(2,11):20                url2='http://zhide.fanli.com/index/ajaxGetItem?cat_id=0&tag=&page='+str(i)+'-'+str(j)+'&area=0&tag_id=0&shop_id=0'21                list_url.append(url2)22         return list_url23     def getHtml(self,url):24         # url='http://zhide.fanli.com/p'+str(pageIndex)25         try:26             request=urllib2.Request(url,headers=self.headers)27             response=urllib2.urlopen(request)28             html=response.read()29             return html30         except urllib2.URLError,e:31             if hasattr(e,'reason'):32                 PRint u"連接失敗",e.reason33                 return  None34     def parse(self):35         urls=self.get_url()36         i=037         # with open('zhide.txt',a) as f:38         #     f.write()39         for url in urls:40             i=i+141             html=self.getHtml(url)42             soup=BeautifulSoup(html,'html.parser')43             divs=soup.find_all('div',class_='zdm-list-item J-item-wrap item-no-expired')44 45             # for item in divs[0]:46             #     print 'item'+str(item)47 48             for div in divs:49                 con_list=[]50                 # 商品名稱51                 title=div.find('h4').get_text()52                 # 分類53                 item_type=div.find('div',class_='item-type').a.string54                 # 推薦人55                 item_user=div.find('div',class_='item-user').string56                 # 內容57                 item_cont=div.find('div',class_='item-content').get_text(strip=True)58                 # 值得買人數59                 type_yes=div.find('a',attrs={'data-type':'yes'}).string60                 # 不值得買人數61                 type_no=div.find('a',attrs={'data-type':'no'}).string62                 con_list.append(title)63                 con_list.append(item_type)64                 con_list.append(item_user)65                 con_list.append(item_cont)66                 con_list.append(type_yes)67                 con_list.append(type_no)68 69 70                 f=open('zhide.txt','a')71                 for item in con_list:72                     f.write(item.encode('utf-8')+'|')73                 f.write('/n')74                 f.close()75             print 'sleeping   loading %d'%i76             time.sleep(3)77 78 79 80 81 zhide=FanLi()82 zhide.parse()
View Code

 各種不足之處,還望各位大神指正。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿合奇县| 喀喇| 醴陵市| 板桥市| 永德县| 卢湾区| 北海市| 清徐县| 永新县| 甘谷县| 若羌县| 静乐县| 灵石县| 三亚市| 信阳市| 桐庐县| 合水县| 新沂市| 云安县| 绥芬河市| 沙湾县| 柳林县| 南康市| 玉溪市| 张家川| 池州市| 宣汉县| 灵丘县| 时尚| 兴城市| 昌乐县| 湛江市| 察雅县| 正阳县| 沙雅县| 禄丰县| 吉林省| 竹北市| 庆元县| 辰溪县| 永宁县|