Python抓取天貓商品詳細資訊及交易記錄
一、搭建Python環境
- 本帖使用的是Python 2.7
- 涉及到的模組:spynner, scrapy, bs4, pymmssql
二、要獲取的天貓資料
三、資料抓取流程
四、原始碼
#coding:utf-8
import spynner
from scrapy.selector import Selector
from bs4 import BeautifulSoup
import random
import pymssql
#------------------------接資料庫-----------------------------#
server="localhost"
user="sa"
password = "123456"
conn=pymssql.connect(server,user,password,"TmallData")
if conn:
print "DataBase connecting successfully!"
else:
print "DataBase connecting error!"
cursor=conn.cursor()
#----------------------定義網頁操作函式--------------------------#
def py_click_element(browser,pos):
#點選網頁中的元素
#pos example:'a[href="#description"]'
browser.click(pos)
browser.wait(random.randint(3,10))
return browser
def py_click_xpath(browser,xpath):
xpath=xpath+'/@href'
inner_href=Selector(text=browser.html).xpath(xpath).extract()
pos='a[href="'+str(inner_href[0])+'"]'
browser=py_click_element(browser, pos)
return browser
def py_webpage_load(browser,url):
browser.load(url,load_timeout=60)
browser.wait(10)
return browser
def py_check_element(browser,xpath):
#按照xpath查詢元素,如果存在則返回True,否則返回False
if Selector(text=browser.html).xpath(xpath).extract()!=[]:
return True
else:
return False
def py_extract_xpath(browser,xpath):
if py_check_element(browser, xpath):
return Selector(text=browser.html).xpath(xpath).extract()[0]
else:
return "none"
def py_extract_xpaths(browser,xpaths):
#批量提取網頁內容
length=len(xpaths)
results=[0]*length
for i in range(length):
results[i]=py_extract_xpath(browser, xpaths[i])
return results
#-----------------------------資料庫操作函式---------------------------#
#-----------------------------資料提取函式----------------------------#
def py_getDealReord(doc):
soup=BeautifulSoup(doc,'lxml')
tr=soup.find_all('tr')
total_dealRecord=[([0]*5)for i in range(len(tr))]
i=-1
for this_tr in tr:
i=i+1
td_user=this_tr.find_all('td',attrs={'class':"cell-align-l buyer"})
for this_td in td_user:
total_dealRecord[i][0]=this_td.getText().strip(' ')
#print username
td_style=this_tr.find_all('td',attrs={'class':"cell-align-l style"})
for this_td in td_style:
total_dealRecord[i][1]=this_td.getText(',').strip(' ')
#print style
td_quantity=this_tr.find_all('td',attrs={'class':"quantity"})
for this_td in td_quantity:
total_dealRecord[i][2]=this_td.getText().strip(' ')
#print quantity
td_dealtime=this_tr.find_all('td',attrs={'class':"dealtime"})
for this_td in td_dealtime:
total_dealRecord[i][3]=this_td.find('p',attrs={'class':"date"}).getText()
total_dealRecord[i][4]=this_td.find('p',attrs={'class':"time"}).getText()
return total_dealRecord
#--------------------獲取要抓取的所有商品連結-----------------------#
cursor.execute("""
select * from ProductURLs where BrandName='NB'
""")
file=open("H:\\Eclipse\\TmallCrawling\\HTMLParse\\errLog.txt")
InProductInfo=cursor.fetchall()
browser=spynner.Browser()
for temp_InProductInfo in InProductInfo:
url='https:'+temp_InProductInfo[2]
BrandName=temp_InProductInfo[0]
ProductType=temp_InProductInfo[1]
print BrandName,'\t',ProductType,'\t',url
#url= 'https://detail.tmall.com/item.htm?id=524425656711&rn=77636d6db8dea5e30060976fdaf9768d&abbucket=19'
try:
browser=py_webpage_load(browser, url)
except:
print "Loading webpage failed."
file.write(url)
file.write('\n')
continue
xpaths=['//*[@id="J_PromoPrice"]/dd/div/span/text()',\
'//*[@id="J_StrPriceModBox"]/dd/span/text()',\
'//*[@id="J_DetailMeta"]/div[1]/div[1]/div/div[1]/h1/text()',\
'//*[@id="J_PostageToggleCont"]/p/span/text()',\
'//*[@id="J_EmStock"]/text()',\
'//*[@id="J_CollectCount"]/text()',\
'//*[@id="J_ItemRates"]/div/span[2]/text()',\
'//*[@id="J_DetailMeta"]/div[1]/div[1]/div/ul/li[1]/div/span[2]/text()']
out_ProductInfo=py_extract_xpaths(browser,xpaths)
browser=py_click_element(browser,'a[href="#description"]')
ProductProperty=py_extract_xpath(browser, '//*[@id="J_AttrUL"]')
soup=BeautifulSoup(ProductProperty,'lxml')
li=soup.find_all('li')
prop=''
for this_li in li:
prop=prop+this_li.getText()+'\\'
prop=prop[0:len(prop)-1]
out_ProductProperty=prop
print out_ProductProperty
cursor.execute("""
Insert into py_ProductInfo values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
""",(BrandName,ProductType,url,\
out_ProductInfo[2],out_ProductInfo[1],\
out_ProductInfo[0],out_ProductInfo[7],\
out_ProductInfo[1],out_ProductInfo[3],\
out_ProductInfo[4],out_ProductInfo[5],\
out_ProductProperty))
conn.commit()
Deal_PageCount=0
browser=py_click_element(browser, 'a[href="#J_DealRecord"]')
#browser.browse(True)
DealRecord=py_extract_xpath(browser, '//*[@id="J_showBuyerList"]/table/tbody')
out_DealRecord=py_getDealReord(DealRecord)
for temp_DealRecord in out_DealRecord:
if str(temp_DealRecord[4])=='0':
continue
cursor.execute("""
Insert into DealRecord values(%s,%s,%s,%s,%s,%s)
""",(url,temp_DealRecord[0],temp_DealRecord[1],\
temp_DealRecord[2],temp_DealRecord[3],\
temp_DealRecord[4]))
conn.commit()
Deal_PageCount=Deal_PageCount+1
print "Page ",Deal_PageCount
for i in range(6):
if (i==0) or (i==2):
continue
xpath='//*[@id="J_showBuyerList"]/div/div/a['+str(i)+']'
if py_check_element(browser,xpath):
browser=py_click_xpath(browser, xpath)
DealRecord=py_extract_xpath(browser, '//*[@id="J_showBuyerList"]/table/tbody')
out_DealRecord=py_getDealReord(DealRecord)
for temp_DealRecord in out_DealRecord:
if str(temp_DealRecord[4])=='0':
continue
cursor.execute("""
Insert into DealRecord values(%s,%s,%s,%s,%s,%s)
""",(url,temp_DealRecord[0],temp_DealRecord[1],\
temp_DealRecord[2],temp_DealRecord[3],\
temp_DealRecord[4]))
conn.commit()
Deal_PageCount=Deal_PageCount+1
print "Page ",Deal_PageCount
while py_check_element(browser, '//*[@id="J_showBuyerList"]/div/div/a[6]'):
browser=py_click_xpath(browser, '//*[@id="J_showBuyerList"]/div/div/a[6]')
DealRecord=py_extract_xpath(browser, '//*[@id="J_showBuyerList"]/table/tbody')
out_DealRecord=py_getDealReord(DealRecord)
for temp_DealRecord in out_DealRecord:
if str(temp_DealRecord[4])=='0':
continue
cursor.execute("""
Insert into DealRecord values(%s,%s,%s,%s,%s,%s)
""",(url,temp_DealRecord[0],temp_DealRecord[1],\
temp_DealRecord[2],temp_DealRecord[3],\
temp_DealRecord[4]))
conn.commit()
Deal_PageCount=Deal_PageCount+1
print "Page ",Deal_PageCount
相關推薦
Python抓取天貓商品詳細資訊及交易記錄
一、搭建Python環境 本帖使用的是Python 2.7 涉及到的模組:spynner, scrapy, bs4, pymmssql 二、要獲取的天貓資料 三、資料抓取流程 四、原始碼 #coding:utf-8 import spynner f
通過Python抓取天貓評論資料
接著點進去後,發現有非常多的歷史累計評價,於是我一條條的檢視,一頁頁的翻,覺得口碑還是非常不錯的,於是選擇這款商品。我想大家可能也是這樣的購物模式,也許還可能更加複雜(貨比三家,口碑比較,聯絡賣家......)。如果有一天,我想研究這些個評論資料,然後玩玩高大上的自然語言處理,我是不
scrapy 爬取天貓商品資訊
spider # -*- coding: utf-8 -*- from urllib.parse import urlencode import requests import scrapy import re import json from ..items import TmallItem co
通過爬取天貓商品評論例項分析Python爬取ajax動態生成的資料
本文主要通過爬取天貓商品kindle的評論為例來說明利用python爬取ajax動態生成的資料的方式,本文使用的工具如下: 工具 chrome瀏覽器【尋找評論的動態連結】 python3.5【執行程式碼】 mysql【儲存爬蟲獲得
抓取天貓手機評論
meta pen 天貓 lang ret ntp cat last eat import re import json import time import requests from bs4 import BeautifulSoup tm_headers =
16-使用Selenium模擬瀏覽器抓取淘寶商品美食資訊
淘寶由於含有很多請求引數和加密引數,如果直接分析ajax會非常繁瑣,selenium自動化測試工具可以驅動瀏覽器自動完成一些操作,如模擬點選、輸入、下拉等,這樣我們只需要關心操作而不需要關心後臺發生了怎樣的請求。PhantomJS是一個無介面的瀏覽器。 爬取淘寶搜尋關鍵詞下的寶貝內容,爬取到MONGODB,
Python抓取京東手機的配置資訊
以下程式碼是使用python抓取京東小米8手機的配置資訊 然後找到其配置資訊的標籤,我們找到其配置資訊的標籤為 <div class="Ptable"> 然後再分析其配置資訊的頁面的規律,我們發現都是一個dt對應的一個dd,dt對應的是引數,dd對
python爬取網易雲歌曲資訊及下載連結並簡單展示
我們選取的爬取目標是歌單這一塊兒 chrome瀏覽器 f12抓包 經過簡單的解析,拿到歌曲分類名字 create_table_sql = 'create table ’ + i + ‘(id int auto_increment primary key,song_name varch
【原創】Python+Scrapy+Selenium簡單爬取淘寶天貓商品資訊及評論
(轉載請註明出處)哈嘍,大家好~前言:這次寫這個小指令碼的目的是為了給老師幫個小忙,爬取某一商品的資訊,寫完覺得這個程式似乎也可以用在更普遍的地方,所以就放出來給大家看看啦,然後因為是在很短時間寫的,所以自然有很多不足之處,想著總之實現了功能再說吧,程式碼太醜大不了之後再重構
淘寶天貓商品庫存抓取分析
stat 目前 圖片 中一 輸入框 pla amp 庫存 ask 昨天收到公眾號粉絲的爬蟲需求: 抓取平臺:天貓或者淘寶 爬取對象:某個商品的各分類的價格和庫存數 因此花費兩天時間抓取完成,基於python3 抓取, flask 可視化頁面查看,目前支持網頁可視化查看:
Python抓取京東商品信息
Python抓取京東商品信息打開網頁http://item.jd.com/7336413.html定位到“規格與包裝” Python抓取京東商品信息
python抓取豆瓣電影top250資訊
1、本博文中程式碼是轉載內容,原文章地址如下: https://blog.csdn.net/submit66/article/details/78631342?utm_source=blogxgwz1 2、只是在原文程式碼的基礎上稍作修改,添加了一些註釋及無關緊要的程式碼 3、本
Python抓取電視劇《天盛長歌》豆瓣短評,並製作成詞雲。
最近在看《天盛長歌》,才看了30多集,感覺裡邊的劇情還是很有深度,每個反派都是智商線上,劇情也是環環相扣,以至於每個鏡頭給了哪些特寫我都要細細斟酌一番。不過可能劇情是根據小說改編,所以部分劇情有些老套,而且因為節奏有點慢,劇情過多,光是大皇子領盒飯就用了20集。目前來說不喜歡
Python爬取淘寶商品資訊
頁面分析 開啟淘寶搜尋衛衣男 檢視原始碼 我們這裡可以找到幾個關鍵詞 通過分析我們可以找到價格,郵費,商家地址,付款人數,商家ID,店鋪名稱。 分析URL 我們可以看到 第一頁url:https://s.taobao.com/search?q=%E5%8D%AB%E
python抓取去哪網當天的酒店資訊
searchHotel python抓取去哪網當天的酒店資訊 . 主要內容 環境準備 selenium 使用 資料抓取 程式碼地址 環境準備 安裝selenium sudo pip install selenium seleni
教您使用java爬蟲gecco抓取JD全部商品資訊
轉自:http://www.geccocrawler.com/demo-jd/ gecco爬蟲 如果對gecco還沒有了解可以參看一下gecco的github首頁。gecco爬蟲十分的簡單易用,JD全部商品資訊的抓取9個類就能搞定。 JD網站的分析
Python爬蟲 抓取大資料崗位招聘資訊(51job為例)
簡單介紹一下爬蟲原理。並給出 51job網站完整的爬蟲方案。 爬蟲基礎知識 資料來源 網路爬蟲的資料一般都來自伺服器的響應結果,通常有html和json資料等,這兩種資料也是網路爬蟲的主要資料來源。 其中html資料是網頁的原始碼,通過瀏覽器-檢視原始碼可
python爬蟲爬取非同步載入網頁資訊(python抓取網頁中無法通過網頁標籤屬性抓取的內容)
1.問題描述 最近由於學習內容的要求,需要從網頁上抓取一些資料來做分析報告,在看了python爬蟲的一些基礎知識之後就直接上手去網站上爬資料了。作為新手踩坑是無法避免,最近就遇到了一個比較難的問題: 一般情況下,要抓去網頁上某個標籤上的內容,在通過urllib下
python抓取動態資料 A股上市公司基本資訊
1.背景 之前寫的抓取A股所有上市公司資訊的小程式在上交所網站改版後,需要同步修改 pyton2.7.9 2.分析過程 以抓取宇通客車【600066】資訊為例 紅框中的內容是需要抓取的資訊,檢視網頁原始碼 可以看到公司資訊並沒有直接寫到html中,使用chrome “
教您使用java爬蟲gecco抓取JD全部商品資訊(三)
詳情頁抓取 @Gecco(matchUrl="http://item.jd.com/{code}.html", pipelines="consolePipeline") public classProductDetailimplementsHtmlBean{ private static fin