爬虫实战:Requests+BeautifulSoup 爬取京东内衣信息并导入表格(python)
生活随笔
收集整理的這篇文章主要介紹了
爬虫实战:Requests+BeautifulSoup 爬取京东内衣信息并导入表格(python)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
準備工作
假如我們想把京東內衣類商品的信息全部保存到本地,通過手工復制粘貼將是一項非常龐大的工程,此時,可以用python爬蟲實現。
第一步:分析網頁地址
起始網頁地址
起始網頁地址
https://search.jd.com/Search?keyword=%E5%86%85%E8%A1%A3%E5%A5%B3&suggest=4.def.0.base&wq=%E5%86%85%E8%A1%A3%E5%A5%B3&page=1&s=56&click=1(在這里你會看到,明明在瀏覽器URL欄看到的是中文,但是復制url,粘貼到記事本或代碼里面,就會變成如下這樣?)
在很多網站的URL中對一些get的參數或關鍵字進行編碼,所以我們復制出來的時候,會出現問題。但復制過來的網址可以直接打開。本例子不用管這個。
那么,怎樣才能自動爬取第一頁以外的其他頁面,打開第三頁,網頁地址如下,分析發現和第一頁區別在于:第一頁最后&page=1,第三頁&page=3
我們可以想到自動獲取多個網頁的方法,可以for循環實現,每次循環后,page+1
第三頁網址如圖
第一步:解析代碼
先選擇商品
一個li標簽為一個商品
然后選擇具體信息
這部分自己慢慢研究網頁源代碼吧
第二步:代碼
from bs4 import BeautifulSoup import numpy as np import requests from requests.exceptions import RequestException import pandas as pd #讀取網頁 def craw(url,page):try:headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}html1 = requests.request("GET", url, headers=headers,timeout=10)html1.encoding ='utf-8' # 加編碼,重要!轉換為字符串編碼,read()得到的是byte格式的html=html1.textreturn htmlexcept RequestException:#其他問題print('讀取error')return None#解析網頁并保存數據到表格 def pase_page(url,page):html=craw(url,page)html=str(html)if html is not None:soup = BeautifulSoup(html, 'lxml')"---先選擇商品--"shangping=soup.select('#J_goodsList ul li')for li in shangping:"---名稱---"name=li.select('.p-name.p-name-type-2 em')name=[i.get_text() for i in name]"---價格---"price = li.select('.p-price i')price = [i.get_text() for i in price]"---店鋪---"shop=li.select('.p-shop a')shop= [i.get_text() for i in shop]if(len(name)!= 0)and (len(price)!= 0) and ( len(shop) != 0):#print('名稱:{0} ,價格{1},店鋪名:{2}'.format(name, price, shop))information=[name,price,shop]information=np.array(information)information = information.reshape(-1,3)information=pd.DataFrame(information,columns=['名稱','價格','店鋪'])if page == 1:information.to_csv('京東文胸數據1.csv', mode='a+', index=False) # mode='a+'追加寫入else:information.to_csv('京東文胸數據1.csv', mode='a+', index=False, header=False) # mode='a+'追加寫入else:print('解析error')for i in range(1,10):#遍歷網頁1-10url="https://search.jd.com/Search?keyword=%E5%86%85%E8%A1%A3%E5%A5%B3&suggest=4.def.0.base&wq=%E5%86%85%E8%A1%A3%E5%A5%B3&page="+str(i)+"&s=56&click=1"pase_page(url,i)print('第{0}頁讀取成功'.format(i)) print('結束')本例子中我只選擇了商品 名,價格,店鋪名。你可以選擇更多信息存取
總結
以上是生活随笔為你收集整理的爬虫实战:Requests+BeautifulSoup 爬取京东内衣信息并导入表格(python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大米磨的粉做什么好吃?
- 下一篇: 爬虫+数据分析:重庆买房吗?爬取重庆房价