python爬取亚马逊简单的书籍信息
来源:互联网 发布:华硕笔记本怎么样 知乎 编辑:程序博客网 时间:2024/06/05 18:15
我有个需求就是抓取一些简单的书籍信息存储到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="(.+?)" 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 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 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">(.+?)</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 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,%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();
0 0
- python爬取亚马逊简单的书籍信息
- Python爬取当当、京东、亚马逊图书信息
- 【Python爬虫第二弹】基于爬虫爬取豆瓣书籍的书籍信息查询
- python爬虫爬取豆瓣书籍信息并生成表格
- 利用Python的requests模块爬取当当网的书籍信息(待续)
- 简单Python爬取链接二手房信息
- Python爬取当当网亚马逊书名
- 亚马逊不错的书籍
- 爬取豆瓣图书Top250书籍信息
- 一个简单的异步爬取信息
- Python爬取信息的方法
- Python 爬虫第三步 -- 多线程爬虫爬取当当网书籍信息
- Python爬虫——实战四:爬取亚马逊的商品价格
- python的bs的简单实例爬取58同城手机信息
- [Python学习] 简单爬取CSDN下载资源信息
- Python简单爬虫(爬取天气信息)
- Python 简单爬虫实现(爬取百度百科信息)
- 使用Python爬取学校学生信息!(简单爬虫)
- 半个小时学会使用svn命令行进行团队协作
- Java 中BufferedReader & InputStreamReader 用法
- sqlserver删除
- 获取并输出当前安卓设备的系统信息
- mysql 如何插入一列自增序号
- python爬取亚马逊简单的书籍信息
- 浅谈社交网络
- Eclipse使用Maven tomcat:run命令启动web项目时修改默认端口
- MFC 消息映射
- TS的时间戳里面的90K
- 关于VC6.0版ASCII码在源代码中使用紊乱的测试
- C#——字段 & 属性
- Java中的hashcode方法
- AngularJs的表单验证