欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python實現爬取亞馬遜數據并打印出Excel文件操作示例

系統 1807 0

本文實例講述了Python實現爬取亞馬遜數據并打印出Excel文件操作。分享給大家供大家參考,具體如下:

python大神們別噴,代碼寫的很粗糙,主要是完成功能,能夠借鑒就看下吧,我是學java的,畢竟不是學python的,自己自學看了一點點python,望諒解。

            
#!/usr/bin/env python3
# encoding=UTF-8
import sys
import re
import urllib.request
import json
import time
import zlib
from html import unescape
import threading
import os
import xlwt
import math
import requests
#例如這里設置遞歸為一百萬
sys.setrecursionlimit(1000000000)
##獲取所有列別
def getProUrl():
  urlList = []
  headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"}
  session = requests.Session()
  furl="https://www.amazon.cn/?tag=baidu250-23&hvadid={creative}&ref=pz_ic_22fvxh4dwf_e&page="
  for i in range(0,1):
    html=""
    html = session.post(furl+str(i),headers = headers)
    html.encoding = 'utf-8'
    s=html.text.encode('gb2312','ignore').decode('gb2312')
    url=r'
            
  • ' reg=re.compile(url,re.M) name='"category" : "' + '(.*?)' + '"' reg1=re.compile(name,re.S) urlList = reg1.findall(html.text) return urlList ##根據類別獲取數據鏈接 def getUrlData(ci): url="https://www.amazon.cn/s/ref=nb_sb_noss_2?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&url=search-alias%3Daps&field-keywords="+ci+"&page=1&sort=review-rank" return url ##定時任務,等待1秒在進行 def fun_timer(): time.sleep(3) ##根據鏈接進行查詢每個類別的網頁內容 def getProData(allUrlList): webContentHtmlList = [] headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"} for ci in allUrlList: session = requests.Session() fun_timer() html = session.get(getUrlData(ci),headers = headers) # 設置編碼 html.encoding = 'utf-8' html.text.encode('gb2312', 'ignore').decode('gb2312') gxg = r'
  • ' reg = re.compile(gxg, re.M) items = reg.findall(html.text) print(html.text) webContentHtmlList.append(html.text) return webContentHtmlList ##根據網頁內容過濾需要的屬性和值 def getProValue(): list1 = [] * 5 list2 = [] * 5 list3 = [] * 5 list4 = [] * 5 list5 = [] * 5 list6 = [] * 5 list7 = [] * 5 list8 = [] * 5 urlList = getProUrl(); urlList.remove('全部分類') urlList.remove('Prime會員優先購') index = 0 for head in urlList: if index >= 0 and index < 5: list1.append(head) index = index + 1 if index >= 5 and index < 10: list2.append(head) index = index + 1 if index >= 10 and index < 15: list3.append(head) index = index + 1 if index >= 15 and index < 20: list4.append(head) index = index + 1 if index >= 20 and index < 25: list5.append(head) index = index + 1 if index >= 25 and index < 30: list6.append(head) index = index + 1 if index >= 30 and index < 35: list7.append(head) index = index + 1 if index >= 35 and index < 40: list8.append(head) index = index + 1 webContentHtmlList1 = [] webContentHtmlList1 = getProData(list1) webContentHtmlList2 = [] webContentHtmlList2 = getProData(list2) webContentHtmlList3 = [] webContentHtmlList3 = getProData(list3) webContentHtmlList4 = [] webContentHtmlList4 = getProData(list4) webContentHtmlList5 = [] webContentHtmlList5 = getProData(list5) webContentHtmlList6 = [] webContentHtmlList6 = getProData(list6) webContentHtmlList7 = [] webContentHtmlList7 = getProData(list7) webContentHtmlList8 = [] webContentHtmlList8 = getProData(list8) ##存儲所有數據的集合 dataTwoAllList1 = [] print("開始檢索數據,檢索數據中..........") ##網頁內容1 for html in webContentHtmlList1: for i in range(15): dataList = [] dataList.append(unescape(getProCategory(html,i))) dataList.append(unescape(getProTitle(html,i))) dataList.append(getProPrice(html,i)) dataList.append(getSellerCount(html,i)) dataList.append(getProStar(html,i)) dataList.append(getProCommentCount(html,i)) print(dataList) dataTwoAllList1.append(dataList) ##網頁內容2 for html in webContentHtmlList2: for i in range(15): dataList = [] dataList.append(unescape(getProCategory(html,i))) dataList.append(unescape(getProTitle(html,i))) dataList.append(getProPrice(html,i)) dataList.append(getSellerCount(html,i)) dataList.append(getProStar(html,i)) dataList.append(getProCommentCount(html,i)) print(dataList) dataTwoAllList1.append(dataList) ##網頁內容3 for html in webContentHtmlList3: for i in range(15): dataList = [] dataList.append(unescape(getProCategory(html,i))) dataList.append(unescape(getProTitle(html,i))) dataList.append(getProPrice(html,i)) dataList.append(getSellerCount(html,i)) dataList.append(getProStar(html,i)) dataList.append(getProCommentCount(html,i)) print(dataList) dataTwoAllList1.append(dataList) ##網頁內容4 for html in webContentHtmlList4: for i in range(15): dataList = [] dataList.append(unescape(getProCategory(html,i))) dataList.append(unescape(getProTitle(html,i))) dataList.append(getProPrice(html,i)) dataList.append(getSellerCount(html,i)) dataList.append(getProStar(html,i)) dataList.append(getProCommentCount(html,i)) print(dataList) dataTwoAllList1.append(dataList) ##網頁內容5 for html in webContentHtmlList5: for i in range(15): dataList = [] dataList.append(unescape(getProCategory(html,i))) dataList.append(unescape(getProTitle(html,i))) dataList.append(getProPrice(html,i)) dataList.append(getSellerCount(html,i)) dataList.append(getProStar(html,i)) dataList.append(getProCommentCount(html,i)) print(dataList) dataTwoAllList1.append(dataList) ##網頁內容6 for html in webContentHtmlList6: for i in range(15): dataList = [] dataList.append(unescape(getProCategory(html,i))) dataList.append(unescape(getProTitle(html,i))) dataList.append(getProPrice(html,i)) dataList.append(getSellerCount(html,i)) dataList.append(getProStar(html,i)) dataList.append(getProCommentCount(html,i)) print(dataList) dataTwoAllList1.append(dataList) ##網頁內容7 for html in webContentHtmlList7: for i in range(15): dataList = [] dataList.append(unescape(getProCategory(html,i))) dataList.append(unescape(getProTitle(html,i))) dataList.append(getProPrice(html,i)) dataList.append(getSellerCount(html,i)) dataList.append(getProStar(html,i)) dataList.append(getProCommentCount(html,i)) print(dataList) dataTwoAllList1.append(dataList) ##網頁內容8 for html in webContentHtmlList8: for i in range(15): dataList = [] dataList.append(unescape(getProCategory(html,i))) dataList.append(unescape(getProTitle(html,i))) dataList.append(getProPrice(html,i)) dataList.append(getSellerCount(html,i)) dataList.append(getProStar(html,i)) dataList.append(getProCommentCount(html,i)) print(dataList) dataTwoAllList1.append(dataList) print("檢索數據完成!!!!") print("開始保存并打印Excel文檔數據!!!!") ##保存文檔 createTable(time.strftime("%Y%m%d") + '亞馬遜銷量數據統計.xls', dataTwoAllList1) ##抽取類別 def getProCategory(html,i): i = 0; name = ' ' + '(.*?)' + ' ' reg=re.compile(name,re.S) items = reg.findall(html) if len(items)==0: return "" else: if i ' + '(.*?)' + '' reg=re.compile(name,re.S) items = reg.findall(html) if len(items)==0: return "¥0" else: return items[0] ##抽取賣家統計 def getSellerCount(html,i): html = getHtmlById(html,i) name = ' ' + '(.*?)' + ' ' reg=re.compile(name,re.S) items = reg.findall(html) if len(items)==0: return "(0 賣家)" else: return checkSellerCount(items,0) ##檢查賣家統計 def checkSellerCount(items,i): result = items[i].find('賣家') >= 0 if result: if len(items[i])<=9: return items[i] else: return '(0 賣家)' else: if i + 1 < len(items): i = i + 1 result = items[i].find('賣家') >= 0 if result: if len(items[i]) <= 9: return items[i] else: return '(0 賣家)' if i + 1 < len(items[i]): i = i + 1 result = items[i].find('賣家') >= 0 if result: if len(items[i]) <= 9: return items[i] else: return '(0 賣家)' else: return '(0 賣家)' else: return '(0 賣家)' else: return '(0 賣家)' else: return '(0 賣家)' return '(0 賣家)' ##抽取星級 def getProStar(html,i): html = getHtmlById(html,i) name = ' ' + '(.*?)' + ' ' reg=re.compile(name,re.S) items = reg.findall(html) if len(items)==0: return "平均 0 星" else: return checkProStar(items,0) ##檢查星級 def checkProStar(items,i): result = items[i].find('星') >= 0 if result: return items[i] else: if i + 1 < len(items): i = i + 1 result = items[i].find('星') >= 0 if result: return items[i] else: return '平均 0 星' else: return '平均 0 星' return '平均 0 星' ##抽取商品評論數量 銷量 ## 56 def getProCommentCount(html,i): name = ' ' reg=re.compile(name,re.S) items = reg.findall(html) if len(items)==0: return "0" else: if i ") else: return "0" ##根據id取出html里面的內容 def get_id_tag(content, id_name): id_name = id_name.strip() patt_id_tag = """<[^>]*id=['"]?""" + id_name + """['" ][^>]*>""" id_tag = re.findall(patt_id_tag, content, re.DOTALL|re.IGNORECASE) if id_tag: id_tag = id_tag[0] else: id_tag="" return id_tag ##縮小范圍 定位值 def getHtmlById(html,i): start = get_id_tag(html,"result_"+str(i)) i=i+1 end = get_id_tag(html, "result_" + str(i)) name = start + '.*?'+end reg = re.compile(name, re.S) html = html.strip() items = reg.findall(html) if len(items) == 0: return "" else: return items[0] ##生成word文檔 def createTable(tableName,dataTwoAllList): flag = 1 results = [] results.append("類別,標題,價格,賣家統計,星級,評論數") columnName = results[0].split(',') # 創建一個excel工作簿,編碼utf-8,表格中支持中文 wb = xlwt.Workbook(encoding='utf-8') # 創建一個sheet sheet = wb.add_sheet('sheet 1') # 獲取行數 rows = math.ceil(len(dataTwoAllList)) # 獲取列數 columns = len(columnName) # 創建格式style style = xlwt.XFStyle() # 創建font,設置字體 font = xlwt.Font() # 字體格式 font.name = 'Times New Roman' # 將字體font,應用到格式style style.font = font # 創建alignment,居中 alignment = xlwt.Alignment() # 居中 alignment.horz = xlwt.Alignment.HORZ_CENTER # 應用到格式style style.alignment = alignment style1 = xlwt.XFStyle() font1 = xlwt.Font() font1.name = 'Times New Roman' # 字體顏色(綠色) # font1.colour_index = 3 # 字體加粗 font1.bold = True style1.font = font1 style1.alignment = alignment for i in range(columns): # 設置列的寬度 sheet.col(i).width = 5000 # 插入列名 for i in range(columns): sheet.write(0, i, columnName[i], style1) for i in range(1,rows): for j in range(0,columns): sheet.write(i, j, dataTwoAllList[i-1][j], style) wb.save(tableName) ##入口開始 input("按回車鍵開始導出..........") fun_timer() print("三秒后開始抓取數據.......,請等待!") getProValue(); print("數據導出成功!請注意查看!") print("數據文檔《亞馬遜銷量數據統計.xls》已經存于C盤下面的C:\Windows\SysWOW64的該路徑下面!!!!") input()
  • 結果數據:

    Python實現爬取亞馬遜數據并打印出Excel文件操作示例_第1張圖片

    打包成exe文件,直接可以點擊運行:打包過程我就不一一說了,都是一些命令操作:

    要安裝pyinstaller,打成exe的操作命令:--inco是圖標,路徑和項目當前路徑一樣

    途中遇到很多問題,都一一解決了,亂碼,ip限制,打包后引入模塊找不到,遞歸最大次數,過濾的一些問題

    pyinstaller -F -c --icon=my.ico crawling.py ??? 這是打包命令

    Python實現爬取亞馬遜數據并打印出Excel文件操作示例_第2張圖片

    效果圖:

    Python實現爬取亞馬遜數據并打印出Excel文件操作示例_第3張圖片

    更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python正則表達式用法總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

    希望本文所述對大家Python程序設計有所幫助。


    更多文章、技術交流、商務合作、聯系博主

    微信掃碼或搜索:z360901061

    微信掃一掃加我為好友

    QQ號聯系: 360901061

    您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

    【本文對您有幫助就好】

    您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

    發表我的評論
    最新評論 總共0條評論
    主站蜘蛛池模板: 亚洲国产综合网 | 密室逃脱第一季免费观看完整在线 | 波多野结衣高清在线播放 | 欧美一区二区三区久久 | 午夜小视频免费观看 | 欧美日韩一区在线观看 | 一区二区三区四区在线 | 久久亚洲国产成人亚 | 瑟瑟网站免费网站入口 | 婷婷色激情 | 久久精品国产久精国产 | 欧美三级在线 | 精品国产AV色一区二区深夜久久 | 国产精品亚洲综合一区在线观看 | 91久久国产 | 四虎影视免费观看免费观看 | 成人一区专区在线观看 | 国产你懂得 | 狠狠躁夜夜躁人人爽天天段 | 亚洲 精品 综合 精品 自拍 | а√天堂资源中文最新版地址 | 99久在线视频 | 国产高清亚洲 | 国产精品第一区第27页 | 日本视频在线免费 | 一级片在线观看 | 99久久精品国产导航 | 日日噜噜夜夜狠狠视频buoke | 国产亚洲精品久久精品6 | 日韩精品www| aⅴ色国产 欧美 | 作爱视频免费观看 | a级在线观看免费 | 日本一二三区视频 | 欧美综合国产 | 色婷婷导航| 国产一级免费在线观看 | 国产精品资源在线观看网站 | 国产精品黄网站免费进入 | 魔法骑士在线观看免费完整版高清 | 色香蕉视频 |