返回顶部
首页 > 资讯 > 后端开发 > Python >如何用Python爬取当当、京东、亚马逊图书信息
  • 706
分享到

如何用Python爬取当当、京东、亚马逊图书信息

2023-06-27 09:06:17 706人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“如何用python爬取当当、京东、亚马逊图书信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Python爬取当当、京东、亚马逊图书信息”吧!注: 1.本程序采用 MSs

本篇内容主要讲解“如何用python爬取当当、京东、亚马逊图书信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Python爬取当当、京东、亚马逊图书信息”吧!

注:
1.本程序采用 MSsqlserver 数据库存储,请运行程序前手动修改程序开头处的数据库链接信息;
2.需要 bs4、requests、pymssql 库支持;
3.支持多线程

源码

from bs4 import BeautifulSoup import re,requests,pymysql,threading,os,traceback  try:   conn = pyMysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='book',charset="utf8")   cursor = conn.cursor() except:   print('\\\\n错误:数据库连接失败')  #返回指定页面的html信息 def getHTMLText(url):   try:     headers = {'User-Agent':'Mozilla/5.0 (windows NT 6.1; Win64; x64) AppleWEBKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}     r = requests.get(url,headers = headers)     r.raise_for_status()     r.encoding = r.apparent_encoding     return r.text   except:     return '' #返回指定url的Soup对象 def getSoupObject(url):   try:     html = getHTMLText(url)     soup = BeautifulSoup(html,'html.parser')     return soup   except:     return '' #获取该关键字在图书网站上的总页数 def getPageLength(webSiteName,url):   try:     soup = getSoupObject(url)     if webSiteName == 'DangDang':       a = soup('a',{'name':'bottom-page-turn'})       return a[-1].string     elif webSiteName == 'Amazon':       a = soup('span',{'class':'pagnDisabled'})       return a[-1].string   except:     print('\\\\n错误:获取{}总页数时出错...'.fORMat(webSiteName))     return -1  class DangDangThread(threading.Thread):   def __init__(self,keyWord):     threading.Thread.__init__(self)     self.keyword = keyword   def run(self):     print('\\\\n提示:开始爬取当当网数据...')     count = 1        length = getPageLength('DangDang','Http://search.dangdang.com/?key={}'.format(self.keyword))#总页数     tableName = 'db_{}_dangdang'.format(self.keyword)      try:       print('\\\\n提示:正在创建DangDang表...')       cursor.execute('create table {} (id int ,title text,prNow text,prPre text,link text)'.format(tableName))       print('\\\\n提示:开始爬取当当网页面...')       for i in range(1,int(length)):         url = 'http://search.dangdang.com/?key={}&page_index={}'.format(self.keyword,i)         soup = getSoupObject(url)         lis = soup('li',{'class':re.compile(r'line'),'id':re.compile(r'p')})         for li in lis:           a = li.find_all('a',{'name':'itemlist-title','dd_name':'单品标题'})           pn = li.find_all('span',{'class': 'search_now_price'})           pp = li.find_all('span',{'class': 'search_pre_price'})            if not len(a) == 0:             link = a[0].attrs['href']             title = a[0].attrs['title'].strip()           else:             link = 'NULL'             title = 'NULL'            if not len(pn) == 0:             prNow = pn[0].string           else:             prNow = 'NULL'            if not len(pp) == 0:             prPre = pp[0].string           else:             prPre = 'NULL'           sql = "insert into {} (id,title,prNow,prPre,link) values ({},'{}','{}','{}','{}')".format(tableName,count,title,prNow,prPre,link)           cursor.execute(sql)           print('\\\\r提示:正在存入当当数据,当前处理id:{}'.format(count),end='')           count += 1           conn.commit()     except:       pass class AmazonThread(threading.Thread):   def __init__(self,keyword):     threading.Thread.__init__(self)     self.keyword = keyword    def run(self):     print('\\\\n提示:开始爬取亚马逊数据...')     count = 1     length = getPageLength('Amazon','https://www.amazon.cn/s/keywords={}'.format(self.keyword))#总页数     tableName = 'db_{}_amazon'.format(self.keyword)          try:       print('\\\\n提示:正在创建Amazon表...')       cursor.execute('create table {} (id int ,title text,prNow text,link text)'.format(tableName))          print('\\\\n提示:开始爬取亚马逊页面...')       for i in range(1,int(length)):         url = 'https://www.amazon.cn/s/keywords={}&page={}'.format(self.keyword,i)         soup = getSoupObject(url)         lis = soup('li',{'id':re.compile(r'result_')})         for li in lis:           a = li.find_all('a',{'class':'a-link-normal s-access-detail-page a-text-normal'})           pn = li.find_all('span',{'class': 'a-size-base a-color-price s-price a-text-bold'})           if not len(a) == 0:             link = a[0].attrs['href']             title = a[0].attrs['title'].strip()           else:             link = 'NULL'             title = 'NULL'            if not len(pn) == 0:             prNow = pn[0].string           else:             prNow = 'NULL'            sql = "insert into {} (id,title,prNow,link) values ({},'{}','{}','{}')".format(tableName,count,title,prNow,link)           cursor.execute(sql)           print('\\\\r提示:正在存入亚马逊数据,当前处理id:{}'.format(count),end='')           count += 1           conn.commit()     except:       pass class JDThread(threading.Thread):   def __init__(self,keyword):     threading.Thread.__init__(self)     self.keyword = keyword   def run(self):     print('\\\\n提示:开始爬取京东数据...')     count = 1      tableName = 'db_{}_jd'.format(self.keyword)          try:       print('\\\\n提示:正在创建JD表...')       cursor.execute('create table {} (id int,title text,prNow text,link text)'.format(tableName))       print('\\\\n提示:开始爬取京东页面...')       for i in range(1,100):         url = 'https://search.jd.com/Search?keyword={}&page={}'.format(self.keyword,i)         soup = getSoupObject(url)         lis = soup('li',{'class':'gl-item'})         for li in lis:           a = li.find_all('div',{'class':'p-name'})           pn = li.find_all('div',{'class': 'p-price'})[0].find_all('i')            if not len(a) == 0:             link = 'http:' + a[0].find_all('a')[0].attrs['href']             title = a[0].find_all('em')[0].get_text()           else:             link = 'NULL'             title = 'NULL'                      if(len(link) > 128):             link = 'TooLong'            if not len(pn) == 0:             prNow = '¥'+ pn[0].string           else:             prNow = 'NULL'           sql = "insert into {} (id,title,prNow,link) values ({},'{}','{}','{}')".format(tableName,count,title,prNow,link)           cursor.execute(sql)           print('\\\\r提示:正在存入京东网数据,当前处理id:{}'.format(count),end='')           count += 1           conn.commit()     except :       pass def closeDB():   global conn,cursor   conn.close()   cursor.close()  def main():   print('提示:使用本程序,请手动创建空数据库:Book,并修改本程序开头的数据库连接语句')   keyword = input("\\\\n提示:请输入要爬取的关键字:")    dangdangThread = DangDangThread(keyword)   amazonThread = AmazonThread(keyword)   jdThread = JDThread(keyword)    dangdangThread.start()   amazonThread.start()   jdThread.start()   dangdangThread.join()   amazonThread.join()   jdThread.join()    closeDB()    print('\\\\n爬取已经结束,即将关闭....')   os.system('pause')    main()

示例截图:

关键词:Android  下的部分运行结果(以导出至 excel

如何用Python爬取当当、京东、亚马逊图书信息

如何用Python爬取当当、京东、亚马逊图书信息

如何用Python爬取当当、京东、亚马逊图书信息

到此,相信大家对“如何用Python爬取当当、京东、亚马逊图书信息”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何用Python爬取当当、京东、亚马逊图书信息

本文链接: https://lsjlt.com/news/309435.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用Python爬取当当、京东、亚马逊图书信息
    本篇内容主要讲解“如何用Python爬取当当、京东、亚马逊图书信息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Python爬取当当、京东、亚马逊图书信息”吧!注: 1.本程序采用 MSS...
    99+
    2023-06-27
  • 用Python获取亚马逊商品信息
    目录引言一、获取亚马逊列表页的信息二、获取详情页信息三、代理设置 四、全部代码总结引言         亚马逊网站相较于国内的购物网...
    99+
    2024-04-02
  • 怎么用Python获取亚马逊商品信息
    这篇文章将为大家详细讲解有关怎么用Python获取亚马逊商品信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引言        亚马逊网站相较于国内的购物网站,可...
    99+
    2023-06-26
  • 如何用Python爬取当初IG夺冠的诺言
    如何用Python爬取当初IG夺冠的诺言,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言当年IG夺冠可谓是惊天动地,媒体铺天盖地的传满整个神州大陆,如果你在高...
    99+
    2023-06-02
  • Python如何一键爬取你所关心的书籍信息
    本篇文章给大家分享的是有关Python如何一键爬取你所关心的书籍信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言 平时看到的豆瓣爬虫基本都是爬豆瓣top100电...
    99+
    2023-06-02
  • 如何用scrapy框架爬取豆瓣读书Top250的书类信息
    这篇文章主要讲解了“如何用scrapy框架爬取豆瓣读书Top250的书类信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用scrapy框架爬取豆瓣读书Top250的书类信息”吧!安装方...
    99+
    2023-07-05
  • Python如何获取亚马逊的评论信息并进行处理
    本篇内容主要讲解“Python如何获取亚马逊的评论信息并进行处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何获取亚马逊的评论信息并进行处理”吧!一、分析亚马逊的评论请求首先打开...
    99+
    2023-06-29
  • 如何使用python爬虫爬取大学排名信息
    这篇文章将为大家详细讲解有关如何使用python爬虫爬取大学排名信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 这次爬取的网址请搜索“阿凡题”(纯技术讨论)“阿凡题”(纯技术讨论) 在该网址选择查院校...
    99+
    2023-06-02
  • 详解.NET6如何实现获取当前登录用户信息
    目录需求目标原理和思路实现创建当前用户获取接口实现接口功能使用功能验证总结需求 在前面的文章里使用.NET 6开发TodoList应用之领域实体创建原理和思路,我们留了一个...
    99+
    2024-04-02
  • 如何获取免费亚马逊服务器账号信息
    1. 亚马逊 AWS 免费套餐 亚马逊 AWS(Amazon Web Services)提供了一项免费套餐,可以让用户在一定时间内免费使用一些云计算资源。通过注册 AWS 免费套餐,您可以获得一些免费的亚马逊服务器账号信息。 2. 注册 ...
    99+
    2023-10-27
    亚马逊 账号 服务器
  • AngularJs如何利用百度地图API 定位当前位置获取地址信息
    这篇文章主要介绍AngularJs如何利用百度地图API 定位当前位置获取地址信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!第一、申请百度密钥  很简单的几步就搞定第二...
    99+
    2024-04-02
  • Python如何用三步爬取全网情诗信息
    Python如何用三步爬取全网情诗信息,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言还在为如何写情书而苦恼吗?还在担心自己文采不够?没关系、Python带你穿越时空领略...
    99+
    2023-06-02
  • Python如何利用正则表达式爬取网页信息及图片
    一、正则表达式是什么? 概念: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来...
    99+
    2024-04-02
  • 如何取消亚马逊云服务器绑定手机号信息
    1. 登录亚马逊云控制台 首先,打开您的浏览器并访问亚马逊云服务(AWS)的官方网站。在页面右上角,点击"登录"按钮,并使用您的AWS账号凭据登录。 2. 进入云服务器管理页面 登录成功后,您将看到AWS控制台的主页。在搜索栏中输入"云服...
    99+
    2023-10-27
    亚马逊 手机号 绑定
  • 如何利用python读取图片属性信息
            从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable image file format),是...
    99+
    2024-04-02
  • 如何取消亚马逊云服务器绑定账号信息提示
    登录AWS控制台:在AWS控制台中,输入"管理您的云资源",然后输入"云对象名称"(AWS Cloud Object Name),选择您要删除的云对象,然后按"删除"按钮。 取消自动锁定:在AWS控制台中,输入"管理您的云资源",然后输入...
    99+
    2023-10-27
    亚马逊 绑定 账号
  • 如何使用python网络爬虫基于selenium爬取斗鱼直播信息
    这篇文章给大家分享的是有关如何使用python网络爬虫基于selenium爬取斗鱼直播信息的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、本文使用的第三方包和工具python 3.8  谷歌...
    99+
    2023-06-29
  • 详解如何使用Python网络爬虫获取招聘信息
    目录前言项目目标项目准备反爬措施项目实现效果展示小结前言 现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部...
    99+
    2024-04-02
  • 如何取消亚马逊云服务器绑定账号信息提醒设置
    1. 登录亚马逊云控制台 首先,打开您的浏览器并登录到您的亚马逊云控制台。输入您的用户名和密码,然后点击登录。 2. 导航到云服务器服务 在控制台的顶部菜单栏中,找到“服务”选项,并将鼠标悬停在上面。在弹出的下拉菜单中,选择“计算”下的“...
    99+
    2023-10-27
    亚马逊 绑定 账号
  • 如何用python代码爬取全国所有必胜客餐厅信息
    如何用python代码爬取全国所有必胜客餐厅信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。当我刚接触 Python 时,我已经被 Python 深深所吸引。...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作