c爬虫抓取网页数据(Python显示results结果数据对应的文本和链接(图))

优采云 发布时间: 2021-12-30 17:27

  c爬虫抓取网页数据(Python显示results结果数据对应的文本和链接(图))

  默认会安装 html, js, css, python3, Anaconda, python3, Google Chrome,

  爬虫的定义

  即使打开浏览器手动复制数据,也称为网页抓取。

  使用程序(或机器人)自动为您完成网页抓取工作,称为爬虫。

  网页的数据是什么?

  通常,首先将其存储并放置在数据库或电子表格中以供检索或进一步分析。

  所以,你真正想要的功能是这样的:

  找到链接,获取网页,抓取指定信息,并存储。

  这个过程可能会反过来,甚至滚雪球。

  您想以自动化的方式完成它。

  抓取文本和链接

  例如,这是一个网页

  

  我们希望抓取的内容如下

  

  让我们开始操作

  # 启动 Google Chrome

pipenv shell

# 启动 jupyter

jupyter notebook

from requests_html import HTMLSession

# 建立一个会话(session)

session = HTMLSession()

# 获取网页内容,html格式的

url = 'https://www.jianshu.com/p/85f4624485b9'

r = session.get(url)

# 仅显示文字部分

print(r.html.text)

  

  # 仅显示网页内的链接(相对链接)

print(r.html.links)

  

  # 显示绝对链接

print(r.html.absolute_links)

  

  抓取指定的内容和链接

  右键点击网页,选择“检查”,可以看到网页的源代码,在源代码的左上角有一个选择器可以选择你想要的内容。

  选中内容的源代码会高亮显示,然后鼠标右击选择“复制”>“复制选择器”复制选择器

  找到一个文本编辑器,粘贴它,看看复制了什么

  body > div.note > div.post > div.article > div.show-content > div > p:nth-child(4) > a

  让我们看看如何使用它

  sel = 'body > div.note > div.post > div.article > div.show-content > div > p:nth-child(4) > a'

results = r.html.find(sel)

print(results)

  下面是输出

  []

  结果是一个仅收录

一项的列表。此项收录

一个网址,即我们要查找的第一个链接(“玉树知兰”)对应的网址。

  但文字描述“《玉树知兰》”去哪儿了?

  别着急,我们让Python显示结果数据对应的文字。

  print(results[0].text)

# '玉树芝兰'

# 提取链接

results[0].absolute_links

# 显示一个集合

# {'https://www.jianshu.com/nb/130182'}

# 集合转列表

print(list(results[0].absolute_links)[0])

# 'https://www.jianshu.com/nb/130182'

  有了处理这第一个环节的经验,你就有了很多信心,对吧?

  其他的链接无非就是找到标记的路径,然后拍猫和虎的照片。

  但是,如果每次找到链接都需要手动输入这些句子,那就太麻烦了。

  这里是编程技巧。一一重复执行的语句。如果工作顺利,我们会尝试将它们合并在一起并制作一个简单的功能。

  对于这个函数,只要给出一个选择路径(sel),它就会把它找到的所有描述文本和链接路径返回给我们

  def get_text_link_from_sel(sel):

mylist = []

try:

results = r.html.find(sel)

for result in results:

mytext = result.text

mylink = list(result.absolute_links)[0]

# 这里多了一个括号

mylist.append((mytext, mylink))

return mylist

except:

return None

  下面测试这个小程序

  print(get_text_link_from_sel(sel))

# [('玉树芝兰', 'https://www.jianshu.com/nb/130182')]

  数据再处理

  复制其他链接,与上面链接不同的是p:nth-child(4)> a中括号内的数字)

  如果我们不限制“p”的具体位置信息呢?

  让我们试试吧。这次保留标记路径中的所有其他信息,只修改“p”点。

  sel = 'body > div.note > div.post > div.article > div.show-content > div > p > a'

print(get_text_link_from_sel(sel))

  

  嗯,我们要找的所有内容都在这里。

  然而,我们的工作还没有结束。

  我们必须将采集

到的信息导出到 Excel 并保存。

  还记得我们常用的数据框工具 Pandas 吗?是时候让它再次展现它的神奇力量了。

  import pandas as pd

df = pd.DataFrame(get_text_link_from_sel(sel))

print(df)

  内容还可以,但是我们对标题不满意,所以我们必须用更有意义的列名替换它:

  df.columns = ['text', 'link']

print(df)

  

  好的,现在您可以将捕获的内容输出到 Excel。

  Pandas 的内置命令可以将数据框保存为 csv 格式,这种格式可以直接用 Excel 打开查看。

  df.to_csv('output.csv', encoding='gbk', index=False)

  注意编码需要指定为gbk,否则在Excel中查看默认的utf-8编码可能会出现乱码。

  我们来看看生成的 csv 文件。

  

  概括

  本文将向您展示使用 Python 自动爬网的基本技巧。希望通过阅读和动手实践,您可以掌握以下知识点:

  或许你觉得这篇文章过于简单,无法满足你的要求。

  文章只展示了如何从一个网页中抓取信息,但您必须处理数千个网页。

  别担心。

  本质上,抓取一个网页与抓取 10,000 个网页是一样的。

  而且,根据我们的示例,您是否已经尝试过获取链接?

  以链接为基础,您可以滚雪球,让 Python 爬虫“爬行”到已解析的链接以进行进一步处理。

  以后在实际场景中,你可能要处理一些棘手的问题:

  需要注意的是,虽然网络爬虫抓取数据的能力很强,但是学习和实践也有一定的门槛。

  当您面临数据采集任务时,您应该首先查看此列表:

  如果答案是否定的,则需要自己编写脚本并调动爬虫来抓取它。

  为了巩固你所学的知识,请切换到另一个网页,根据我们的代码进行修改,抓取你感兴趣的内容。

  如果能记录下自己爬的过程,在评论区把记录链接分享给大家就更好了。

  因为刻意练习是掌握实践技能的最佳途径,而教学是最好的学习。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线