全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

re模块在爬虫中的应用

发布时间:2022-09-08 15:25:00
发布人:qyf

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

  抓取标签间的内容

  我们前几篇文章给大家分享了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('文件下载结束!')

相关文章

什么项目适合使用Scrum?

什么项目适合使用Scrum?

2023-10-14
scrum敏捷软件开发是什么?

scrum敏捷软件开发是什么?

2023-10-14
敏捷BI和传统BI有什么区别?

敏捷BI和传统BI有什么区别?

2023-10-14
敏捷开发实行中各岗位职能是什么?

敏捷开发实行中各岗位职能是什么?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取