欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python爬取亞馬遜書籍信息代碼分享

 更新時間:2017年12月09日 11:02:31   作者:天下醉閑  
這篇文章主要介紹了python爬取亞馬遜書籍信息代碼分享,具有一定借鑒價值,需要的朋友可以參考下。

我有個需求就是抓取一些簡單的書籍信息存儲到mysql數(shù)據(jù)庫,例如,封面圖片,書名,類型,作者,簡歷,出版社,語種。

我比較之后,決定在亞馬遜來實現(xiàn)我的需求。

我分析網(wǎng)站后發(fā)現(xiàn),亞馬遜有個高級搜索的功能,我就通過該搜索結(jié)果來獲取書籍的詳情URL。

由于亞馬遜的高級搜索是用get方法的,所以通過分析,搜索結(jié)果的URL,可得到node參數(shù)是代表書籍類型的。field-binding_browse-bin是代表書籍裝飾。

所以我固定了書籍裝飾為平裝,而書籍的類型,只能每次運行的時候,爬取一種類型的書籍難過

之后就是根據(jù)書籍詳情頁面利用正則表達式來匹配需要的信息了。

以下源代碼,命名不是很規(guī)范。。。

import requests
import sys
import re
import pymysql

class product:
  type="歷史"
  name=""
  author=""
  desciption=""
  pic1=""
  languages=""
  press=""

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/gp/search/ref=sr_adv_b/?search-alias=stripbooks&field-binding_browse-bin=2038564051&sort=relevancerank&page="
  for i in range(1,7):
    html=""
    print(furl+str(i)) 
    html = session.post(furl+str(i)+'&node=658418051',headers = headers)
    html.encoding = 'utf-8'
    s=html.text.encode('gb2312','ignore').decode('gb2312')
    url=r'</li><li id=".*?" data-asin="(.+?)" class="s-result-item celwidget">'
    reg=re.compile(url,re.M)
    items = reg.findall(html.text)
    for i in range(0,len(items)):
      urlList.append(items[i])
  urlList=set(urlList)
  return urlList

def getProData(url):
  pro = product()
  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()
  zurl="https://www.amazon.cn/dp/"
  html = session.get(zurl+url,headers = headers)
  html.encoding = 'utf-8'
  s=html.text.encode('gb2312','ignore').decode('gb2312')
  pro.pic1=getProPic(html)
  pro.name=getProName(html)
  pro.author=getProAuthor(html)
  pro.desciption=getProDescrip(html)
  pro.press=getProPress(html)
  pro.languages=getProLanguages(html)
  return pro

def getProPic(html):
  pic=r'id="imgBlkFront" data-a-dynamic-image="{&quot;(.+?)&quot;.*?}"'
  reg=re.compile(pic,re.M)
  items = reg.findall(html.text)
  if len(items)==0:
    return ""
  else:
    return items[0]

def getProName(html):
  name=r'<div class="ma-title"><p class="wraptext goto-top">(.+?)<span'
  reg=re.compile(name,re.M)
  items = reg.findall(html.text)
  if len(items)==0:
    return ""
  else:
    return items[0]

def getProAuthor(html):
  author=r'<span class="author.{0,20}" data-width="".{0,30}>.*?<a class="a-link-normal" href=".*?books" rel="external nofollow" >(.+?)</a>.*?<span class="a-color-secondary">(.+?)</span>'
  reg=re.compile(author,re.S)
  items = reg.findall(html.text)
  au=""
  for i in range(0,len(items)):
    au=au+items[i][0]+items[i][1]
  return au

def getProDescrip(html):
  Descrip=r'<noscript>.{0,30}<div>(.+?)</div>.{0,30}<em></em>.{0,30}</noscript>.{0,30}<div id="outer_postBodyPS"'
  reg=re.compile(Descrip,re.S)
  items = reg.findall(html.text)
  if len(items)==0:
    return ""
  else:
    position = items[0].find('海報:')
    descrip=items[0]
    if position != -1:
      descrip=items[0][0:position]
    return descrip.strip()

def getProPress(html):
  press=r'<li><b>出版社:</b>(.+?)</li>'
  reg=re.compile(press,re.M)
  items = reg.findall(html.text)
  if len(items)==0:
    return ""
  else:
    return items[0].strip()


def getProLanguages(html):
  languages=r'<li><b>語種:</b>(.+?)</li>'
  reg=re.compile(languages,re.M)
  items = reg.findall(html.text)
  if len(items)==0:
    return ""
  else:
    return items[0].strip()

def getConnection():
  config = {
     'host':'121.**.**.**',
     'port':3306,
     'user':'root',
     'password':'******',
     'db':'home_work',
     'charset':'utf8',
     'cursorclass':pymysql.cursors.DictCursor,
     }
  connection = pymysql.connect(**config)
  return connection

urlList = getProUrl()
i = 0
for d in urlList:
  i = i + 1
  print (i)
  connection = getConnection()
  pro = getProData(d)
  try:
    with connection.cursor() as cursor:
      sql='INSERT INTO books (type,name,author,desciption,pic1,languages,press) VALUES (%s,%s,%s,%s,%s,%s,%s)'
      cursor.execute(sql,(pro.type,pro.name,pro.author,pro.desciption,pro.pic1,pro.languages,pro.press))
    connection.commit()
  finally:
    connection.close();

總結(jié)

以上就是本文關(guān)于python爬取亞馬遜書籍信息代碼分享的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

matplotlib在python上繪制3D散點圖實例詳解

python的unittest測試類代碼實例

Python編程實現(xiàn)使用線性回歸預測數(shù)據(jù)

如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Python+selenium點擊網(wǎng)頁上指定坐標的實例

    Python+selenium點擊網(wǎng)頁上指定坐標的實例

    今天小編就為大家分享一篇Python+selenium點擊網(wǎng)頁上指定坐標的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 通過字符串導入 Python 模塊的方法詳解

    通過字符串導入 Python 模塊的方法詳解

    這篇文章主要介紹了通過字符串導入 Python 模塊的方法詳解,本文通過實例結(jié)合,給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Python列表原理與用法詳解【創(chuàng)建、元素增加、刪除、訪問、計數(shù)、切片、遍歷等】

    Python列表原理與用法詳解【創(chuàng)建、元素增加、刪除、訪問、計數(shù)、切片、遍歷等】

    這篇文章主要介紹了Python列表原理與用法,結(jié)合實例形式詳細分析了Python列表的創(chuàng)建、元素增加、刪除、訪問、計數(shù)、切片、遍歷、排序等各種常見操作技巧與使用注意事項,需要的朋友可以參考下
    2019-10-10
  • 全面理解python命名空間字典

    全面理解python命名空間字典

    本文主要介紹了全面理解python命名空間字典,python的命名空間由字典實現(xiàn),屬性為鍵,對象為值,通過屬性找到對象,下面就來具體了解一下,感興趣的可以了解一下
    2023-12-12
  • Tensorflow--取tensorf指定列的操作方式

    Tensorflow--取tensorf指定列的操作方式

    這篇文章主要介紹了Tensorflow--取tensorf指定列的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python3控制路由器——使用requests重啟極路由.py

    Python3控制路由器——使用requests重啟極路由.py

    通過本文給大家介紹Python3控制路由器——使用requests重啟極路由.py的相關(guān)知識,代碼寫了相應的注釋,以后再寫成可以方便調(diào)用的模塊,感興趣的朋友一起學習吧
    2016-05-05
  • python中opencv?Canny邊緣檢測

    python中opencv?Canny邊緣檢測

    這篇文章主要介紹了python中opencv?Canny邊緣檢測,Canny邊緣檢測是一種使用多級邊緣檢測算法檢測邊緣的方法。OpenCV提供了函數(shù)cv2.Canny()實現(xiàn)Canny邊緣檢測。更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容
    2022-06-06
  • python csv實時一條一條插入且表頭不重復問題

    python csv實時一條一條插入且表頭不重復問題

    這篇文章主要介紹了python csv實時一條一條插入且表頭不重復問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python calendar日歷模塊的應用案例演示

    Python calendar日歷模塊的應用案例演示

    calendar模塊是python用來處理日歷的模塊,通過不同的api和格式輸出多種形式的日歷格式,下面就通過不同的api和參數(shù)來輸出和學習calendar模塊的用法
    2023-06-06
  • Python通用函數(shù)實現(xiàn)數(shù)組計算的方法

    Python通用函數(shù)實現(xiàn)數(shù)組計算的方法

    數(shù)組的運算可以進行加減乘除,同時也可以將這些算數(shù)運算符進行任意的組合已達到效果。這篇文章主要介紹了Python通用函數(shù)實現(xiàn)數(shù)組計算的代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-06-06

最新評論