Python如何使用BeautifulSoup爬取网页信息


Posted in Python onNovember 26, 2019

这篇文章主要介绍了Python如何使用BeautifulSoup爬取网页信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

简单爬取网页信息的思路一般是

1、查看网页源码

2、抓取网页信息

3、解析网页内容

4、储存到文件

现在使用BeautifulSoup解析库来爬取刺猬实习Python岗位薪资情况

一、查看网页源码

Python如何使用BeautifulSoup爬取网页信息

这部分是我们需要的内容,对应的源码为:

Python如何使用BeautifulSoup爬取网页信息

分析源码,可以得知:

1、岗位信息列表在<section class="widget-job-list">中

2、每条信息在<article class="widget item">中

3、对于每条信息,我们需要提取出的内容是 公司名称,职位, 薪资

二、抓取网页信息

使用request.get()抓取,返回的soup是网页的文本信息

def get_one_page(url):
  response = requests.get(url)
  soup = BeautifulSoup(response.text, "html.parser")
  return soup

三、解析网页内容

1、找到起始位置<section>

2、在<article>中匹配到各项信息

3、返回信息列表用以存储

def parse_page(soup):
  #待存储的信息列表
  return_list = []
  #起始位置
  grid = soup.find('section', attrs={"class": "widget-job-list"})
  if grid:
    #找到所有的岗位列表
    job_list = soup.find_all('article', attrs={"class": "widget item"})

    #匹配各项内容
    for job in job_list:
      #find()是寻找第一个符合的标签
      company = job.find('a', attrs={"class": "crop"}).get_text().strip()#返回类型为string,用strip()可以去除空白符,换行符
      title = job.find('code').get_text()
      salary = job.find('span', attrs={"class": "color-3"}).get_text()
      #将信息存到列表中并返回
      return_list.append(company + " " + title + " " + salary)
  return return_list

四、存储到文件

将列表信息存储到shixi.csv文件中

def write_to_file(content):
  #以追加的方式打开,设置编码格式防止乱码
  with open("shixi.csv", "a", encoding="gb18030")as f:
    f.write("\n".join(content))

五、爬取多页信息

在网页url中 可以看到最后的page代表的是页数信息

所以在main方法中传入一个page,然后循环运行main(page)就可以爬取多页信息了

def main(page):
  url = 'https://www.ciweishixi.com/search?key=python&page=' + str(page)
  soup = get_one_page(url)
  return_list = parse_page(soup)
  write_to_file(return_list)
if __name__ == "__main__":
  for i in range(4):
    main(i)

六、运行结果

Python如何使用BeautifulSoup爬取网页信息

七、完整代码

import requests
import re
from bs4 import BeautifulSoup

def get_one_page(url):
  response = requests.get(url)
  soup = BeautifulSoup(response.text, "html.parser")
  return soup

def parse_page(soup):
  #待存储的信息列表
  return_list = []
  #起始位置
  grid = soup.find('section', attrs={"class": "widget-job-list"})
  if grid:
    #找到所有的岗位列表
    job_list = soup.find_all('article', attrs={"class": "widget item"})

    #匹配各项内容
    for job in job_list:
      #find()是寻找第一个符合的标签
      company = job.find('a', attrs={"class": "crop"}).get_text().strip()#返回类型为string,用strip()可以去除空白符,换行符
      title = job.find('code').get_text()
      salary = job.find('span', attrs={"class": "color-3"}).get_text()
      #将信息存到列表中并返回
      return_list.append(company + " " + title + " " + salary)
  return return_list

def write_to_file(content):
  #以追加的方式打开,设置编码格式防止乱码
  with open("shixi.csv", "a", encoding="gb18030")as f:
    f.write("\n".join(content))
def main(page):
  url = 'https://www.ciweishixi.com/search?key=python&page=' + str(page)
  soup = get_one_page(url)
  return_list = parse_page(soup)
  write_to_file(return_list)
if __name__ == "__main__":
  for i in range(4):
    main(i)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的高级Git库 Gittle
Sep 22 Python
python logging类库使用例子
Nov 22 Python
深入理解Python变量与常量
Jun 02 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
Python实现的rsa加密算法详解
Jan 24 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
django如何连接已存在数据的数据库
Aug 14 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
Django缓存Cache使用详解
Nov 30 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 #Python
Python实现图片添加文字
Nov 26 #Python
从numpy数组中取出满足条件的元素示例
Nov 26 #Python
python实现图片上添加图片
Nov 26 #Python
numpy:找到指定元素的索引示例
Nov 26 #Python
python中seaborn包常用图形使用详解
Nov 25 #Python
解决python中的幂函数、指数函数问题
Nov 25 #Python
You might like
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
JavaScript 学习点滴记录
2009/04/24 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
Vue数据绑定实例写法
2019/08/06 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
python解析html开发库pyquery使用方法
2014/02/07 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
python爬虫使用cookie登录详解
2017/12/27 Python
Flask之flask-session的具体使用
2018/07/26 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
个人优缺点自我评价
2014/01/27 职场文书
欢迎标语大全
2014/06/21 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
小学教师党员承诺书
2015/04/27 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android