當前位置:首頁 » 操作系統 » 淘寶資料庫抓取

淘寶資料庫抓取

發布時間: 2023-08-14 15:41:23

Ⅰ 使用java語言爬取自己的淘寶訂單看看買了哪些東西

Java爬蟲框架WebMagic簡介及使用

一、介紹

webmagic的是一個無須配置、便於二次開發的爬蟲框架,它提供簡單靈活的API,只需少量代碼即可實現一個爬蟲。webmagic採用完全模塊化的設計,功能覆蓋整個爬蟲的生命周期(鏈接提取、頁面下載、內容抽取、持久化),支持多線程抓取,分布式抓取,並支持自動重試、自定義UA/cookie等功能。




二、概覽

WebMagic項目代碼分為核心和擴展兩部分。核心部分(webmagic-core)是一個精簡的、模塊化的爬蟲實現,而擴展部分則包括一些便利的、實用性的功能(例如註解模式編寫爬蟲等)。
WebMagic的結構分為Downloader、PageProcessor、Scheler、Pipeline四大組件,並由Spider將它們彼此組織起來。這四大組件對應爬蟲生命周期中的下載、處理、管理和持久化等功能。而Spider則將這幾個組件組織起來,讓它們可以互相交互,流程化的執行,可以認為Spider是一個大的容器,它也是WebMagic邏輯的核心。

2.1 WebMagic的四個組件

  • Downloader

    Downloader負責從互聯網上下載頁面,以便後續處理。WebMagic默認使用了Apache HttpClient作為下載工具。

  • PageProcessor

    PageProcessor負責解析頁面,抽取有用信息,以及發現新的鏈接。WebMagic使用Jsoup作為HTML解析工具,並基於其開發了解析XPath的工具Xsoup。在這四個組件中,PageProcessor對於每個站點每個頁面都不一樣,是需要使用者定製的部分。

  • Scheler

    Scheler負責管理待抓取的URL,以及一些去重的工作。WebMagic默認提供了JDK的內存隊列來管理URL,並用集合來進行去重。也支持使用Redis進行分布式管理。除非項目有一些特殊的分布式需求,否則無需自己定製Scheler。

  • Pipeline

    Pipeline負責抽取結果的處理,包括計算、持久化到文件、資料庫等。WebMagic默認提供了「輸出到控制台」和「保存到文件」兩種結果處理方案。Pipeline定義了結果保存的方式,如果你要保存到指定資料庫,則需要編寫對應的Pipeline。對於一類需求一般只需編寫一個Pipeline。

  • 2.2 用於數據流轉的對象

  • Request

    Request是對URL地址的一層封裝,一個Request對應一個URL地址。它是PageProcessor與Downloader交互的載體,也是PageProcessor控制Downloader唯一方式。

  • Page

    Page代表了從Downloader下載到的一個頁面——可能是HTML,也可能是JSON或者其他文本格式的內容。Page是WebMagic抽取過程的核心對象,它提供一些方法可供抽取、結果保存等。

  • ReusltItems

    ReusltItems相當於一個Map,它保存PageProcessor處理的結果,供Pipeline使用。它的API與Map很類似,值得注意的是它有一個欄位skip,若設置為true,則不應被Pipeline處理。

  • 2.3 控制爬蟲運轉的引擎—Spider

    Spider是WebMagic內部流程的核心。Downloader、PageProcessor、Scheler、Pipeline都是Spider的一個屬性,這些屬性是可以自由設置的,通過設置這個屬性可以實現不同的功能。Spider也是WebMagic操作的入口,它封裝了爬蟲的創建、啟動、停止、多線程等功能。
    對於編寫一個爬蟲,PageProcessor是需要編寫的部分,而Spider則是創建和控制爬蟲的入口。

    2.4 WebMagic項目組成

    WebMagic項目代碼包括幾個部分,在根目錄下以不同目錄名分開。它們都是獨立的Maven項目。
    WebMagic主要包括兩個包,這兩個包經過廣泛實用,已經比較成熟:

  • webmagic-core
    webmagic-core是WebMagic核心部分,只包含爬蟲基本模塊和基本抽取器。

  • webmagic-extension

    webmagic-extension是WebMagic的主要擴展模塊,提供一些更方便的編寫爬蟲的工具。包括註解格式定義爬蟲、JSON、分布式等支持。




  • 三、 基本的爬蟲

    3.1 爬蟲的流程 (可以參考上邊的框架架構圖)

  • Downloader-頁面下載

  • 頁面下載是一切爬蟲的開始。

    大部分爬蟲都是通過模擬http請求,接收並分析響應來完成。這方面,JDK自帶的HttpURLConnection可以滿足最簡單的需要,而Apache HttpClient(4.0後整合到HttpCompenent項目中)則是開發復雜爬蟲的不二之選。它支持自定義HTTP頭(對於爬蟲比較有用的就是User-agent、cookie等)、自動redirect、連接復用、cookie保留、設置代理等諸多強大的功能。

    webmagic使用了HttpClient 4.2,並封裝到了HttpClientDownloader。學習HttpClient的使用對於構建高性能爬蟲是非常有幫助的,官方的Tutorial就是很好的學習資料。目前webmagic對HttpClient的使用仍在初步階段,不過對於一般抓取任務,已經夠用了

  • PageProcessor-頁面分析及鏈接抽取

  • Selector是webmagic為了簡化頁面抽取開發的獨立模塊,是整個項目中我最得意的部分。這里整合了CSS Selector、XPath和正則表達式,並可以進行鏈式的抽取,很容易就實現強大的功能。即使你使用自己開發的爬蟲工具,webmagic的Selector仍然值得一試

  • Jsoup

  • HtmlParser

  • Apache tika

  • HtmlCleaner與Xpath

  • 這里說的頁面分析主要指HTML頁面的分析。頁面分析可以說是垂直爬蟲最復雜的一部分,在webmagic里,PageProcessor是定製爬蟲的核心。通過編寫一個實現PageProcessor介面的類,就可以定製一個自己的爬蟲

  • HTML分析是一個比較復雜的工作,Java世界主要有幾款比較方便的分析工具:

  • webmagic的Selector

  • Scheler-URL管理

  • URL管理的問題可大可小。對於小規模的抓取,URL管理是很簡單的。我們只需要將待抓取URL和已抓取URL分開保存,並進行去重即可。使用JDK內置的集合類型Set、List或者Queue都可以滿足需要。如果我們要進行多線程抓取,則可以選擇線程安全的容器,例如LinkedBlockingQueue以及ConcurrentHashMap。因為小規模的URL管理非常簡單,很多框架都並不將其抽象為一個模塊,而是直接融入到代碼中。但是實際上,抽象出Scheler模塊,會使得框架的解耦程度上升一個檔次,並非常容易進行橫向擴展,這也是我從scrapy中學到的。

  • Pipeline-離線處理和持久化

  • Pipeline其實也是容易被忽略的一部分。大家都知道持久化的重要性,但是很多框架都選擇直接在頁面抽取的時候將持久化一起完成,例如crawer4j。但是Pipeline真正的好處是,將頁面的在線分析和離線處理拆分開來,可以在一些線程里進行下載,另一些線程里進行處理和持久化。

  • 3.2 使用WebMagic爬取一個壁紙網站

    首先引入WebMagic的依賴,webmagic-core-{version}.jar和webmagic-extension-{version}.jar。在項目中添加這兩個包的依賴,即可使用WebMagic。

    maven中引入依賴jar包

  • <dependency>

  • <groupId>us.codecraft</groupId>

  • <artifactId>webmagic-core</artifactId>

  • <version>0.5.3</version>

  • </dependency>

  • <dependency>

  • <groupId>us.codecraft</groupId>

  • <artifactId>webmagic-extension</artifactId>

  • <version>0.5.3</version>

  • </dependency>1234567891012345678910

  • 不使用maven的用戶,可以去http://webmagic.io中下載最新的jar包。

Ⅱ 怎麼利用爬蟲技術抓取淘寶搜索頁面的產品信息

可以通過requests庫re庫進行淘寶商品爬蟲爬取
import requests
import re
def getHTMLText(url):
try:
r= requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""

def parsePage(ilt,html):
try:
plt = re.findall(r'\"view_price\":\"[\d+\.]*\"',html)
tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)
for i in range(len(plt)):
price = eval(plt[i].split(':')[1])
title = eval(tlt[i].split(':')[1])
ilt.append([price,title])
except:
print("F")

def printGoodsList(ilt):
tplt = "{:4}\t{:8}\t{:16}"
print(tplt.format("序號","價格","商品名稱"))
count = 0
for g in ilt:
count = count +1
print(tplt.format(count,g[0],g[1]))

def main():
goods = '書包'
depth = 2
start_url = "https://s.taobao.com/search?q="+ goods
infoList = []
for i in range(depth):
try:
url = start_url +'&s='+str(44*i)
html = getHTMLText(url)
parsePage(infoList,html)
except:
continue
printGoodsList(infoList)
main()
這段代碼在過去是可以爬取淘寶商品信息,但是因為淘寶的反扒技術升級,便不能讓你大搖大擺地進出自如了。
此外也可以藉助採集實現採集

Ⅲ 使用Appium爬取淘寶App數據

Appium選擇了Client/Server的設計模式,Server可以在OSX、Windows以及Linux系統上運行,Client支持Ruby、Python、Java、PHP、C#、JavaScript等語言的實現。

本教程以MacBook Pro通過Python程序控制Android系統的淘寶App為例,因為Appium依賴Android SDK,Android SDK需要Java環境,所以所需環境如下:

pc端和移動端的連接有兩種方式USB連接和無線連接

更多命令:官方教程

程序第一次運行的時候,會在手機安裝3個app,一定要同意安裝,只有Appium Settings在桌面有圖標

Android SDK官方教程
Appium官方教程
Appium新手入門

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:705
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:968
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:676
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:828
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:737
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1076
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:308
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:188
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:875
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:829