前言
今天給大家介紹的是Python爬取螺螄粉商品數(shù)據(jù)艰匙,在這里給需要的小伙伴們代碼限煞,并且給出一點(diǎn)小心得。
首先是爬取之前應(yīng)該盡可能偽裝成瀏覽器而不被識(shí)別出來是爬蟲员凝,基本的是加請(qǐng)求頭署驻,但是這樣的純文本數(shù)據(jù)爬取的人會(huì)很多,所以我們需要考慮更換代理IP和隨機(jī)更換請(qǐng)求頭的方式來對(duì)螺螄粉數(shù)據(jù)進(jìn)行爬取健霹。
在每次進(jìn)行爬蟲代碼的編寫之前旺上,我們的第一步也是最重要的一步就是分析我們的網(wǎng)頁。
通過分析我們發(fā)現(xiàn)在爬取過程中速度比較慢糖埋,所以我們還可以通過禁用谷歌瀏覽器圖片宣吱、JavaScript等方式提升爬蟲爬取速度。
開發(fā)工具
Python版本: 3.6
相關(guān)模塊:
requests模塊
json模塊
re模塊
time模塊
xlwt模塊
xlrd模塊
環(huán)境搭建
安裝Python并添加到環(huán)境變量瞳别,pip安裝需要的相關(guān)模塊即可征候。
文中完整代碼及Excel文件,評(píng)論留言獲取
思路分析
瀏覽器中打開我們要爬取的頁面
按F12進(jìn)入開發(fā)者工具祟敛,查看我們想要的螺螄粉商品數(shù)據(jù)在哪里
這里我們需要頁面數(shù)據(jù)就可以了
代碼實(shí)現(xiàn)
headers = {
#'Host':'s.taobao.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'cookie':'你的Cookie',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
'upgrade-insecure-requests': '1',
'referer':'https://www.taobao.com/',
}
#請(qǐng)求網(wǎng)頁內(nèi)容
url="https://s.taobao.com/search?q=螺螄粉&ie=utf8&bcoffset=0&ntoffset=0&s=0"
#requests+請(qǐng)求頭headers
r = requests.get(url, headers=headers)
r.encoding = 'utf8'
s = (r.content)
#亂碼問題
html = s.decode('utf8')
# 初始化execl表
def initexcel():
# 創(chuàng)建一個(gè)workbook 設(shè)置編碼
workbook = xlwt.Workbook(encoding='utf-8')
# 創(chuàng)建一個(gè)worksheet
worksheet = workbook.add_sheet('sheet1')
workbook.save('螺螄粉.xls')
##寫入表頭
value1 = [["標(biāo)題", "銷售地", "銷售量", "評(píng)論數(shù)", "銷售價(jià)格", '商品惟一ID', '圖片URL']]
book_name_xls = '螺螄粉.xls'
write_excel_xls_append(book_name_xls, value1)
# 正則模式
p_title = '"raw_title":"(.*?)"' #標(biāo)題
p_location = '"item_loc":"(.*?)"' #銷售地
p_sale = '"view_sales":"(.*?)人付款"' #銷售量
p_comment = '"comment_count":"(.*?)"'#評(píng)論數(shù)
p_price = '"view_price":"(.*?)"' #銷售價(jià)格
p_nid = '"nid":"(.*?)"' #商品惟一ID
p_img = '"pic_url":"(.*?)"' #圖片URL
# 數(shù)據(jù)集合
data = []
# 正則解析
title = re.findall(p_title,html)
location = re.findall(p_location,html)
sale = re.findall(p_sale,html)
comment = re.findall(p_comment,html)
price = re.findall(p_price,html)
nid = re.findall(p_nid,html)
img = re.findall(p_img,html)
for j in range(len(title)):
data.append([title[j],location[j],sale[j],comment[j],price[j],nid[j],img[j]])
# 寫入execl
def write_excel_xls_append(path, value):
index = len(value) # 獲取需要寫入數(shù)據(jù)的行數(shù)
workbook = xlrd.open_workbook(path) # 打開工作簿
sheets = workbook.sheet_names() # 獲取工作簿中的所有表格
worksheet = workbook.sheet_by_name(sheets[0]) # 獲取工作簿中所有表格中的的第一個(gè)表格
rows_old = worksheet.nrows # 獲取表格中已存在的數(shù)據(jù)的行數(shù)
new_workbook = copy(workbook) # 將xlrd對(duì)象拷貝轉(zhuǎn)化為xlwt對(duì)象
new_worksheet = new_workbook.get_sheet(0) # 獲取轉(zhuǎn)化后工作簿中的第一個(gè)表格
for i in range(0, index):
for j in range(0, len(value[i])):
new_worksheet.write(i+rows_old, j, value[i][j]) # 追加寫入數(shù)據(jù)疤坝,注意是從i+rows_old行開始寫入
new_workbook.save(path) # 保存工作簿
#保存數(shù)據(jù)
book_name_xls = '螺螄粉.xls'
write_excel_xls_append(book_name_xls, data)
time.sleep(6)
如何獲取Cookie
結(jié)果展示
最后
今天的分享到這里就結(jié)束了 ,感興趣的朋友也可以去試試哈
對(duì)文章有問題的馆铁,或者有其他關(guān)于python的問題跑揉,可以在評(píng)論區(qū)留言或者私信我哦
覺得我分享的文章不錯(cuò)的話,可以關(guān)注一下我埠巨,或者給文章點(diǎn)贊(/≧▽≦)/