python爬取亚马逊书籍信息代码分享

python爬取亚马逊书籍信息代码分享,第1张

概述我有个需求就是抓取一些简单的书籍信息存储到mysql数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种。

我有个需求就是抓取一些简单的书籍信息存储到MysqL数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种。

我比较之后,决定在亚马逊来实现我的需求。

我分析网站后发现,亚马逊有个高级搜索的功能,我就通过该搜索结果来获取书籍的详情URL。

由于亚马逊的高级搜索是用get方法的,所以通过分析,搜索结果的URL,可得到node参数是代表书籍类型的。fIEld-binding_browse-bin是代表书籍装饰。

所以我固定了书籍装饰为平装,而书籍的类型,只能每次运行的时候,爬取一种类型的书籍难过

之后就是根据书籍详情页面利用正则表达式来匹配需要的信息了。

以下源代码,命名不是很规范。。。

import requestsimport sysimport reimport pyMysqLclass 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="(.+?)" >'    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 urlListdef 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 prodef getProPic(HTML):  pic=r'ID="imgBlkFront" data-a-dynamic-image="{"(.+?)".*?}"'  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 ><p >(.+?)<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  data-wIDth="".{0,30}>.*?<a  href=".*?books" rel="external nofollow" >(.+?)</a>.*?<span >(.+?)</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 audef 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 connectionurlList = getProUrl()i = 0for 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)'      cursor.execute(sql,(pro.type,pro.name,pro.author,pro.desciption,pro.pic1,pro.languages,pro.press))    connection.commit()  finally:    connection.close();

总结

以上就是本文关于python爬取亚马逊书籍信息代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

matplotlib在python上绘制3D散点图实例详解

python的unittest测试类代码实例

Python编程实现使用线性回归预测数据

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

总结

以上是内存溢出为你收集整理的python爬取亚马逊书籍信息代码分享全部内容,希望文章能够帮你解决python爬取亚马逊书籍信息代码分享所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1201091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存