网页爬虫抓取百度图片(soup爬虫学习方法总结(一):SQL语句create数据)

优采云 发布时间: 2022-02-28 08:09

  网页爬虫抓取百度图片(soup爬虫学习方法总结(一):SQL语句create数据)

  获取响应内容:如果服务器能正常响应,就会得到一个Response。Response的内容就是要获取的页面的内容。响应的内容可能包括 HTML、Json 字符串、二进制数据(如图片和视频)等。

  解析内容:获取的内容可能是HTML,可以用正则表达式和网页解析库进行解析;可能是Json,可以直接转成Json对象解析;它可能是二进制数据,可以保存或进一步处理。

  保存数据:数据分析完成后保存。既可以存储为文本文件,也可以存储在数据库中。

  四、Python 爬虫实例

  爬行动物的定义、功能、原理等信息前面已经介绍过了。相信很多小伙伴已经开始对爬虫产生了兴趣,准备尝试一下。现在,我们来“干货”,直接贴一个简单的Python爬虫代码:

  1.前期准备:安装Python环境,安装PYCHARM软件,安装MYSQL数据库,新建数据库考试,考试中建表屋,用于存储爬虫结果【SQL语句:create table house(price varchar ( 88),unit varchar(88),area varchar(88));]

  2.爬虫的目标:爬取链家租赁网首页(url:)中所有房源的价格、单位、面积,然后将爬虫结构存入数据库。

  3.爬虫源码:如下

  import requests #请求URL页面内容

  from bs4 import BeautifulSoup #获取页面元素

  import pymysql #链接数据库

  导入时间#time函数

  import lxml #解析库(支持HTML\XML解析,支持XPATH解析)

  #get_page 功能:通过requests的get方法获取url链接的内容,然后整合成BeautifulSoup可以处理的格式

  def get_page(url):

  响应 = requests.get(url)

  汤= BeautifulSoup(response.text,'lxml')

  回汤

  #get_links函数的作用:获取listing页面上的所有出租链接

  def get_links(link_url):

  汤 = get_page(link_url)

  links_div = soup.find_all('div',class_="pic-panel")

  links=[div.a.get('href') for div in links_div]

  返回链接

  #get_house_info的作用是获取一个出租页面的信息:价格、单位、面积等。

  def get_house_info(house_url):

  汤=get_page(house_url)

  价格 =soup.find('span',class_='total').text

  unit = soup.find('span',class_='unit').text.strip()

  area = 'test' #这里area字段我们自定义一个测试进行测试

  信息 = {

  “价格”:价格,

  “单位”:单位,

  “区域”:区域

  }

  返回信息

  #数据库配置信息写入字典

  数据库 = {

  '主机': '127.0.0.1',

  '数据库':'考试',

  “用户”:“根”,

  “密码”:“根”,

  '字符集':'utf8mb4'}

  #链接数据库

  def get_db(设置):

  返回 pymysql.connect(**设置)

  #将爬虫获取的数据插入数据库

  定义插入(分贝,房子):

  值 = "'{}',"*2 + "'{}'"

  sql_values=values.format(house['price'],house['unit'],house['area'])

  sql="""

  插入房屋(价格,单位,面积)值({})

  """.format(sql_values)

  游标 = db.cursor()

  cursor.execute(sql)

  mit()

  #主程序流程:1.连接数据库2.获取每个listing信息的URL列表3.FOR循环从第一个URL开始获取具体信息(价格等)列表的4. 一一插入数据库

  db = get_db(数据库)

  链接 = get_links('#39;)

  对于链接中的链接:

  时间.sleep(2)

  房子=get_house_info(链接)

  插入(分贝,房子)

  首先,“要想做好工作,必须先利其器”。用 Python 编写爬虫程序也是如此。在编写爬虫的过程中,需要导入各种库文件。正是这些及其有用的库文件帮助我们完成了爬虫。对于大部分工作,我们只需要调用相关的接口函数即可。导入格式为导入库文件名。这里需要注意的是,要在PYCHARM中安装库文件,可以将光标放在库文件名上同时按ctrl+alt键安装库文件,也可以是通过命令行安装(pip安装库文件名),如果安装失败或者没有安装,后续爬虫肯定会报错。在这段代码中,程序前五行导入相关库文件:requests用于请求URL页面内容;BeautifulSoup 用于解析页面元素;pymysql用于连接数据库;time 收录各种时间函数;lxml是一个解析库,用于解析HTML、XML格式文件,也支持XPATH解析。

  其次,我们从代码末尾的主程序来看整个爬虫流程:

  通过 get_db 函数连接到数据库。深入get_db函数,可以看到是通过调用

  Pymysql的connect函数用于实现数据库的连接。这里的**seting是Python采集关键字参数的一种方式。我们将数据库的连接信息写入一个字典DataBase,并将字典中的信息传递给connect实现。参考。

  使用get_links函数获取链家首页所有房源的链接。所有列表的链接都以列表的形式存储在 Links 中。get_links函数首先通过requests请求获取链家首页的内容,然后通过BeautyfuSoup的接口对内容的格式进行整理,转化为自己可以处理的格式。最后通过电泳find_all函数找到所有收录图片的div样式,然后用for循环获取所有div样式中收录的超链接标签(a)的内容(即href属性的内容),所有超链接存储在列表链接中。

  通过 FOR 循环,遍历 links 中的所有链接(例如,其中一个链接是:)

  使用与2)相同的方法,通过find函数定位元素,获取3)中链接中的价格、单位、地区信息,并将这些信息写入字典Info。

  调用insert函数,将链接中获取的Info信息写入到数据库的house表中。深入insert函数可知,它通过数据库游标函数cursor()执行一条SQL语句,然后数据库执行commit操作,实现响应功能。SQL 语句在这里以一种特殊的方式编写。

  给格式化函数格式化,这是为了方便函数的复用。

  最后运行爬虫代码,可以看到链家首页所有房源信息都写入了数据中。(注:test是我手动指定的测试字符串)

  

  后记:其实Python爬虫并不难。在熟悉了整个爬取过程之后,需要注意一些细节,比如如何获取页面元素,如何构造SQL语句等等。遇到问题不要慌张,可以通过查看IDE的提示一一排除bug,最终得到我们期望的结构。

  最后:

  可以获取我的个人V:atstudy-js,可以免费获取10G软件测试工程师面试合集文档。并免费分享对应的视频学习教程!,包括基础知识、Linux要领、Mysql数据库、抓包工具、接口测试工具、高级测试——Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架,性能测试等

  这些测试数据应该是做【软件测试】的朋友最全面最完整的准备仓库了。这个仓库也陪我走过了最艰难的旅程,希望也能帮到你!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线