千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > re模块在爬虫中的应用

re模块在爬虫中的应用

来源:千锋教育
发布人:qyf
时间: 2022-09-08 15:25:00 1662621900

  接下来给大家分享一下常用的正则表达式抓取网络数据的一些技巧。

  抓取标签间的内容

  我们前几篇文章给大家分享了urllib模块和requests模块是用来获取网络资源的两个模块,而我们获取的网络资源出了json的之外,都是跟HTML标签打交道。我们往往要做的就是获取标签的内容。比如我们获取一下百度的title标题:

  import re

  import requests

  url = "http://www.baidu.com/"

  response = requests.get(url)

  response.encoding='utf-8'

  content = response.text

  # 此处使用findall结合正则表达式完成

  title = re.findall(r'', content)

  print(title[0])

  抓取超链接标签间的内容

  import re

  import requests

  url = "http://www.baidu.com/"

  response = requests.get(url)

  response.encoding='utf-8'

  content = response.text

  # 定义正则表达式获取所有网页的超链接

  res = r"<a.*?href=.*?<\ a="">"

  urls = re.findall(res, content)

  for u in urls:

  print(u)

  当然如果想获取超链接中的内容我们也可以使用正则表达式,只不过使用了分组的内容就是()

  import re

  import requests

  url = "http://www.baidu.com/"

  response = requests.get(url)

  response.encoding='utf-8'

  content = response.text

  #获取超链接之间内容

  res = r'(.*?)'

  texts = re.findall(res, content, re.S|re.M)

  for t in texts:

  print(t)

  观察结果:

图片3

  抓取标签中的参数

  HTML超链接的基本格式为“链接内容”,现在需要获取其中的URL链接地址,方法如下:

  import re

  import requests

  url = "http://www.baidu.com/"

  response = requests.get(url)

  response.encoding='utf-8'

  content = response.text

  # 定义正则表达式获取所有网页的超链接

  res = r"<a.*?href=.*?<\ a="">"

  urls = re.findall(res, content)

  # 将所有的超级链接拼接成字符串

  all_urls = '\n'.join(urls)

  # 定义正则表达式

  res = r"(?<=href=)http:.+?(?=\>)|(?<=href=)http:.+?(?=\s)"

  # 查找符合规则的超级链接

  urls = re.findall(res, content, re.I|re.S|re.M)

  for url in urls:

  print(url)

  抓取图片超链接标签的URL

  HTML插入图片使用标签的基本格式为“”,则需要获取图片URL链接地址,下面���案例不仅获取的图片链接而且将图片保存到了本地。

  import re

  import requests

  # 从网络获取一张图片的html标签

QQ截图20220908152641

  # 使用正则表达式获取src后面的内容

  m = re.match(r'

  print(m.group(1))

  image_path = m.group(1)

  # 如果想下载获取的图片链接我们结合requests和文件保存完成

  response = requests.get(image_path)

  # 获取响应信息的内容

  result = response.content

  # 获取图片名称

  filename = image_path[image_path.rfind('%')+1:]

  path = os.path.join(r'images', filename)

  # 保存到本地将图片

  with open(path, 'wb') as wstream:

  wstream.write(result)

  print('文件下载结束!')

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT