Python爬蟲實戰,requests+xlwt模塊,爬取螺螄粉商品數據(附源碼)

来源:https://www.cnblogs.com/guzichuan/archive/2022/12/11/16973644.html
-Advertisement-
Play Games

前言 今天給大家介紹的是Python爬取螺螄粉商品數據,在這裡給需要的小伙伴們代碼,並且給出一點小心得。 首先是爬取之前應該儘可能偽裝成瀏覽器而不被識別出來是爬蟲,基本的是加請求頭,但是這樣的純文本數據爬取的人會很多,所以我們需要考慮更換代理IP和隨機更換請求頭的方式來對螺螄粉數據進行爬取。 在每次 ...


前言

今天給大家介紹的是Python爬取螺螄粉商品數據,在這裡給需要的小伙伴們代碼,並且給出一點小心得。

首先是爬取之前應該儘可能偽裝成瀏覽器而不被識別出來是爬蟲,基本的是加請求頭,但是這樣的純文本數據爬取的人會很多,所以我們需要考慮更換代理IP和隨機更換請求頭的方式來對螺螄粉數據進行爬取。

在每次進行爬蟲代碼的編寫之前,我們的第一步也是最重要的一步就是分析我們的網頁。

通過分析我們發現在爬取過程中速度比較慢,所以我們還可以通過禁用谷歌瀏覽器圖片、JavaScript等方式提升爬蟲爬取速度。

螺螄粉

開發工具

Python版本: 3.6

相關模塊:

requests模塊

json模塊

re模塊

time模塊

xlwt模塊

xlrd模塊

環境搭建

安裝Python並添加到環境變數,pip安裝需要的相關模塊即可。

思路分析

瀏覽器中打開我們要爬取的頁面
按F12進入開發者工具,查看我們想要的螺螄粉商品數據在哪裡
這裡我們需要頁面數據就可以了

源代碼

代碼實現

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/',
}

#請求網頁內容
url="https://s.taobao.com/search?q=螺螄粉&ie=utf8&bcoffset=0&ntoffset=0&s=0"

#requests+請求頭headers
r = requests.get(url, headers=headers)
r.encoding = 'utf8'
s = (r.content)

#亂碼問題
html = s.decode('utf8')

# 初始化execl表
def initexcel():

    # 創建一個workbook 設置編碼
    workbook = xlwt.Workbook(encoding='utf-8')
    # 創建一個worksheet
    worksheet = workbook.add_sheet('sheet1')
    workbook.save('螺螄粉.xls')
    ##寫入表頭
    value1 = [["標題", "銷售地", "銷售量", "評論數", "銷售價格", '商品惟一ID', '圖片URL']]
    book_name_xls = '螺螄粉.xls'
    write_excel_xls_append(book_name_xls, value1)

# 正則模式
p_title = '"raw_title":"(.*?)"'       #標題
p_location = '"item_loc":"(.*?)"'    #銷售地
p_sale = '"view_sales":"(.*?)人付款"' #銷售量
p_comment = '"comment_count":"(.*?)"'#評論數
p_price = '"view_price":"(.*?)"'     #銷售價格
p_nid = '"nid":"(.*?)"'              #商品惟一ID
p_img = '"pic_url":"(.*?)"'          #圖片URL

# 數據集合
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)  # 獲取需要寫入數據的行數
    workbook = xlrd.open_workbook(path)  # 打開工作簿
    sheets = workbook.sheet_names()  # 獲取工作簿中的所有表格
    worksheet = workbook.sheet_by_name(sheets[0])  # 獲取工作簿中所有表格中的的第一個表格
    rows_old = worksheet.nrows  # 獲取表格中已存在的數據的行數
    new_workbook = copy(workbook)  # 將xlrd對象拷貝轉化為xlwt對象
    new_worksheet = new_workbook.get_sheet(0)  # 獲取轉化後工作簿中的第一個表格
    for i in range(0, index):
        for j in range(0, len(value[i])):
            new_worksheet.write(i+rows_old, j, value[i][j])  # 追加寫入數據,註意是從i+rows_old行開始寫入
    new_workbook.save(path)  # 保存工作簿

#保存數據
book_name_xls = '螺螄粉.xls'
write_excel_xls_append(book_name_xls, data)
time.sleep(6)

如何獲取Cookie

Cookie

結果展示

結果

最後

今天的分享到這裡就結束了 ,感興趣的朋友也可以去試試哈

對文章有問題的,或者有其他關於python的問題,可以在評論區留言或者私信我哦

覺得我分享的文章不錯的話,可以關註一下我,或者給文章點贊(/≧▽≦)/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們前面採集的日誌數據已經保存到 Kafka 中,作為日誌數據的 ODS 層,從 Kafka 的ODS 層讀取的日誌數據分為 3 類, 頁面日誌、啟動日誌和曝光日誌。這三類數據雖然都是用戶行為數據,但是有著完全不一樣的數據結構,所以要拆分處理。將拆分後的不同的日誌寫回 Kafka 不同主題中,作為日 ...
  • 單線程的JS 就是一個傻子,腦子一根筋,做著當前的這件事情,沒有完成之前,絕對不會做下一件事情,那麼通過什麼方法可以讓JS變“聰明”? ...
  • 測試環境 Python 3.6 Win10 代碼實現 #!/usr/bin/env python 3.4.0 #-*- encoding:utf-8 -*- __author__ = 'shouke' import xml.etree.ElementTree as ET def compare_xm ...
  • 書接上回 大數據量、高併發業務怎麼優化?(一) 文章中介紹了非同步批處理的三種方式,本文繼續深入針對前兩種進行講解,並給出代碼示例: 一 普通版本,採用阻塞隊列 ArrayBlockingQueue 使用普通方式能夠直接基於JDK中現成的併發包 ArrayBlockingQueue 提供的 offer ...
  • 文件上傳下載 1.基本介紹 在Web應用中,文件上傳和下載是非常常見的功能 如果是傳輸大文件一般用專門的工具或者插件 文件上傳和下載需要用到兩個包:commons-fileupload.jar和commons-io.jar 2.文件上傳 2.1文件上傳基本原理 文件上傳原理分析圖 文件上傳的解讀: ...
  • 應用層:HTTP超文本傳輸協議,基於TCP/IP通信協議來傳遞數據;傳輸層:TCP傳輸控制協議,採用三次握手的方式建立連接,形成數據傳輸通道;網路層:IP協議,作用是把各種傳輸的數據包發送給請求的接收方; ...
  • 目錄 一.OpenGL 圖像透明度 1.原始圖片 2.效果演示 二.OpenGL 圖像透明度源碼下載 三.猜你喜歡 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 ...
  • package method; /* * 四則運算計算器 * */ import java.util.Scanner; public class Demo07 { public static void main(String[] args) { Scanner scanner = new Scann ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...