python爬蟲58同城(多個資訊一次爬取)
對58同城二手平板電腦的爬蟲
有網友留言說,這個程式碼已經不能爬取了,我2018.11.9號檢視了一下,加了一個異常處理try,現在可以用了,原因是有的資訊裡面的標籤由於促銷價格被修改為別的了,所以爬取不到就會出錯。現在 我將修改後的程式碼替換掉原有的爬取一整頁的程式碼 以及 錯誤的圖片比較 。
一、先爬取內容中的一項
先爬取一項的程式碼
程式碼中soup.select(),不明白的地方,我後續將詳細解釋,爬出來是空列表的情況。
import requests
from bs4 import BeautifulSoup
URL = 'https://bj.58.com/pingbandiannao/35923077687887x.shtml?psid=157596847202024134799949907&entinfo=35923077687887_p&slot=-1&iuType=p_1&PGTID=0d305a36-0000-19ea-0c77-0ae8025ace4f&ClickID=2'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' }
wb_data = requests.get(URL,headers=headers)
soup = BeautifulSoup(wb_data.content, 'lxml')
#print(soup)
NameList = soup.select('h1.detail-title__name')
ProductName = NameList[0].text.strip()
PriceList = soup.select('span.infocard__container__item__main__text--price')
ProductPrice = PriceList[0].text.strip()
ViewList = soup.select('div.infocard__container__item__main')
ProductView = ViewList[1].text
AreaList = soup.select('div.infocard__container__item__main > a')
ProductArea = AreaList[0].text+'-'+AreaList[1].text
SellerNameList = soup.select('div.infocard__container__item__main > a')
SellerName = SellerNameList[2].text
CatalogueList = soup.select('div.nav > a')
Catalogue = CatalogueList[-1].text
data_dict = {
'產品類別': Catalogue,
'產品名稱': ProductName,
'產品價格': ProductPrice,
'產品成色': ProductView,
'產品區域': ProductArea,
'賣家姓名': SellerName
}
print(data_dict)
注意headers需要修改成自己電腦的,詳見我的部落格【python爬蟲–招聘資訊】->headers錯誤資訊,如果不寫headers會被反爬取。
爬去一項的結果
{'產品類別': '北京平板電腦', '產品名稱': 'surface pro5 I5 8G 128G, 全新未拆封', '產品價格': '5000 元', '產品成色': '全新', '產品區域': '通州-馬駒橋', '賣家姓名': '張先生'}
二、爬取一整頁
url = ‘https://bj.58.com/pingbandiannao/?PGTID=0d409654-017a-3436-09be-f01fa1e2217f&ClickID=13’
一整頁程式碼
import requests
from bs4 import BeautifulSoup
#得到每個的詳細資訊
def get_info(URL):
#URL = 'https://bj.58.com/pingbandiannao/35923077687887x.shtml?psid=157596847202024134799949907&entinfo=35923077687887_p&slot=-1&iuType=p_1&PGTID=0d305a36-0000-19ea-0c77-0ae8025ace4f&ClickID=2'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' }
try:
wb_data = requests.get(URL,headers=headers)
soup = BeautifulSoup(wb_data.content, 'lxml')
#print(soup)
NameList = soup.select('h1.detail-title__name')
ProductName = NameList[0].text.strip()
PriceList = soup.select('span.infocard__container__item__main__text--price')
ProductPrice = PriceList[0].text.strip()
AreaList = soup.select('div.infocard__container__item__main > a')
ProductArea = AreaList[0].text.strip()+'-'+AreaList[1].text.strip()
SellerNameList = soup.select('div.infocard__container__item__main > a')
SellerName = SellerNameList[2].text
CatalogueList = soup.select('div.nav > a')
Catalogue = CatalogueList[-1].text
data_dict = {
'產品類別': Catalogue,
'產品名稱': ProductName,
'產品價格': ProductPrice,
'產品區域': ProductArea,
'賣家姓名': SellerName
}
print(data_dict)
except:
print('此項資訊被修改,所以爬取錯誤') #不想看到這句話,可以寫pass
#get_info()
'''
下面是得到一整頁中每個賣家資訊的連結,這裡只爬取了第一頁中的全部資訊,
也可以爬取好多頁。只需要將下方的url中根據每頁資訊的不同變化相應的數字頁碼。
'''
def get_all_info():
url = 'https://bj.58.com/pingbandiannao/?PGTID=0d409654-017a-3436-09be-f01fa1e2217f&ClickID=13'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' }
wb_data = requests.get(url,headers=headers)
soup = BeautifulSoup(wb_data.text, 'lxml')
GetLink = soup.select('td.t > a')
#print(GetLink)
for i in GetLink:
link = i.get('href') #得到href連結
#刪選是平板電腦的連結
if 'pingbandiannao' in link:
get_info(link)
get_all_info()
一整頁的全部資訊結果
{'產品類別': '北京平板電腦', '產品名稱': '上門回收IPAD平板電腦 IPHONE全系列', '產品價格': '4999 元', '產品區域': '北京-邢先生', '賣家姓名': ''}
此項資訊被修改,所以爬取錯誤
{'產品類別': '北京平板電腦', '產品名稱': '展櫃展示櫃鈦合金展櫃精品展櫃珠寶玉器展櫃化妝品展櫃', '產品價格': '面議', '產品區域': '東城-東城周邊', '賣家姓名': '徐經理'}
{'產品類別': '北京平板電腦', '產品名稱': '聯想Yogabook Android 128G 雅黑色', '產品價格': '2000 元', '產品區域': '朝陽-望京', '賣家姓名': '胡先生'}
此項資訊被修改,所以爬取錯誤
此項資訊被修改,所以爬取錯誤
此項資訊被修改,所以爬取錯誤
{'產品類別': '北京平板電腦', '產品名稱': '戴爾i7吃雞遊戲', '產品價格': '2800 元', '產品區域': '朝陽-東壩', '賣家姓名': 's***0'}
{'產品類別': '北京平板電腦', '產品名稱': '古董私人收購 玉器瓷器青銅器古幣字畫 現金結算收購', '產品價格': '99999 元', '產品區域': '北京-陳楓', '賣家姓名': ''}
此項資訊被修改,所以爬取錯誤
{'產品類別': '北京平板電腦', '產品名稱': '轉讓帶車指標的公司', '產品價格': '1 元', '產品區域': '朝陽-安貞', '賣家姓名': '郭先生'}
此項資訊被修改,所以爬取錯誤
{'產品類別': '北京平板電腦', '產品名稱': '華為榮耀暢玩二平板電腦', '產品價格': '650 元', '產品區域': '石景山-金頂街', '賣家姓名': 'z***3'}
{'產品類別': '北京平板電腦', '產品名稱': 'Lenovo/聯想 Miix5 I5 轉賣~', '產品價格': '4396 元', '產品區域': '石景山-衙門口', '賣家姓名': 'l***8'}
{'產品類別': '北京平板電腦', '產品名稱': '九成新轉讓平板電腦', '產品價格': '1600 元', '產品區域': '昌平-沙河', '賣家姓名': 'm***t'}
{'產品類別': '北京平板電腦', '產品名稱': '公司發的福利,一共兩臺,出售一臺', '產品價格': '1200 元', '產品區域': '豐臺-蒲黃榆', '賣家姓名': 'e***6'}
{'產品類別': '北京平板電腦', '產品名稱': '全新未拆封微軟Surface Por電腦', '產品價格': '6000 元', '產品區域': '朝陽-大屯', '賣家姓名': 'q***8'}
此項資訊被修改,所以爬取錯誤
{'產品類別': '北京平板電腦', '產品名稱': '三星TAB3 16G 8.1寸', '產品價格': '500 元', '產品區域': '大興-觀音寺', '賣家姓名': 's***5'}
{'產品類別': '北京平板電腦', '產品名稱': '小米平板便宜出需要的聯絡我', '產品價格': '500 元', '產品區域': '順義-李橋', '賣家姓名': 'f***6'}
{'產品類別': '北京平板電腦', '產品名稱': '電影孩子學習有幫助', '產品價格': '1499 元', '產品區域': '房山-閻村', '賣家姓名': 'h***r'}
此項資訊被修改,所以爬取錯誤
{'產品類別': '北京平板電腦', '產品名稱': 'surfacePro4全新基本未用', '產品價格': '4300 元', '產品區域': '豐臺-麗澤橋', '賣家姓名': '1***h'}
{'產品類別': '北京平板電腦', '產品名稱': '個人全新Ipad Pro轉讓', '產品價格': '3666 元', '產品區域': '豐臺-馬家堡', '賣家姓名': 'o***4'}
{'產品類別': '北京平板電腦', '產品名稱': '華為P20亮黑色', '產品價格': '3300 元', '產品區域': '朝陽-大山子', '賣家姓名': 'n***9'}
{'產品類別': '北京平板電腦', '產品名稱': '處理老臺式顯示器', '產品價格': '150 元', '產品區域': '朝陽-甘露園', '賣家姓名': 'x***3'}
{'產品類別': '北京平板電腦', '產品名稱': '轉全新國行未拆封ipad一臺', '產品價格': '2150 元', '產品區域': '朝陽-北苑', '賣家姓名': '小***滔'}
{'產品類別': '北京平板電腦', '產品名稱': '自用ipad air2 wifi版', '產品價格': '1800 元', '產品區域': '海淀-馬連窪', '賣家姓名': '1***o'}
{'產品類別': '北京平板電腦', '產品名稱': '海爾品牌一體電腦', '產品價格': '260 元', '產品區域': '昌平-城北', '賣家姓名': 'z***1'}
Process finished with exit code 0
圖片比較:
這裡的標籤被網頁改了,所以以前的程式碼會報錯
------------------------------------------------------------------------------------
謝謝支援,親測執行成功。注意更改headers,(好像不修改也可以用)!
相關文章
- 爬蟲實戰——58同城租房資料爬取爬蟲
- python爬取58同城一頁資料Python
- 利用python爬取58同城簡歷資料Python
- python爬蟲——爬取大學排名資訊Python爬蟲
- 58同城 反爬蟲機制及處理爬蟲
- python爬蟲--爬取鏈家租房資訊Python爬蟲
- Python爬蟲爬取淘寶,京東商品資訊Python爬蟲
- 小白學 Python 爬蟲(25):爬取股票資訊Python爬蟲
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- Java爬蟲-爬取疫苗批次資訊Java爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python 第一個爬蟲,爬取 147 小說Python爬蟲
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- 爬蟲:多程式爬蟲爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python使用多程式提高網路爬蟲的爬取速度Python爬蟲
- python 爬蟲 爬取 learnku 精華文章Python爬蟲
- python爬蟲--招聘資訊Python爬蟲
- Python爬蟲 - 記一次字型反爬Python爬蟲
- Python爬蟲爬取美劇網站Python爬蟲網站
- python爬蟲爬取糗事百科Python爬蟲
- Python爬蟲之小說資訊爬取與資料視覺化分析Python爬蟲視覺化
- [python爬蟲] BeautifulSoup和Selenium簡單爬取知網資訊測試Python爬蟲
- Python爬蟲學習筆記(1)爬取知乎使用者資訊Python爬蟲筆記
- 不會Python爬蟲?教你一個通用爬蟲思路輕鬆爬取網頁資料Python爬蟲網頁
- Python爬蟲抓取股票資訊Python爬蟲
- 分散式爬蟲之知乎使用者資訊爬取分散式爬蟲
- 爬蟲實戰(一):爬取微博使用者資訊爬蟲
- 爬蟲01:爬取豆瓣電影TOP 250基本資訊爬蟲
- [python 爬蟲]第一個Python爬蟲,爬取某個新浪部落格所有文章並儲存為doc文件Python爬蟲
- [python爬蟲] 招聘資訊定時系統 (一).BeautifulSoup爬取資訊並儲存MySQLPython爬蟲MySql
- 擼個爬蟲,爬取電影種子爬蟲
- Python爬蟲入門【10】:電子書多執行緒爬取Python爬蟲執行緒
- python爬蟲抓取哈爾濱天氣資訊(靜態爬蟲)Python爬蟲
- 【python爬蟲】python爬蟲demoPython爬蟲
- python 爬蟲 1 爬取酷狗音樂Python爬蟲
- python網路爬蟲--爬取淘寶聯盟Python爬蟲
- Python實現微博爬蟲,爬取新浪微博Python爬蟲