赞
踩
0.准备工作:读入网页加以解析抓取,需要用到的软件包是 requests_html 。我们此处并不需要这个软件包的全部功能,只读入其中的 HTMLSession 就可以。
from requests_html import HTMLSession
session = HTMLSession()
显示的结果却是一个集合。{'https://www.jianshu.com/nb/130182'}
我们不想要集合,只想要其中的链接字符串。所以我们先把它转换成列表,然后从中提取第一项,即网址链接。
list(results[0].absolute_links)[0]
设计一个函数,只需给定一个选择路径(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)) #将每个结果加入list中
return mylist
except:
return None
1.查看规律,得:
sel = 'body > div.note > div.post > div.article > div.show-content > div > p > a'
我们还得把采集到的信息输出到Excel中保存起来。
import pandas as pd
df = pd.DataFrame( get_text_link_from_sel(sel) )
df.columns = ['text', 'link'] #更换列名
df.to_csv('output.csv', encoding='gbk', index=False)
#以把抓取的内容输出到Excel中了。Pandas内置的命令,就可以把数据框变成csv格式。注意这里需要指定encoding(编码)为gbk,否则默认的utf-8编码在Excel中查看的时候,有可能是乱码。
2.代码如下:
- from requests_html import HTMLSession
- session = HTMLSession()
- url = "https://www.baidu.com"
- r = session.get(url)
- print(r.html.text) #查看一下网页文本,可删
- r.html.links #查看一下网页链接,可删
-
- r.html.absolute_links #获取“绝对”链接
-
- sel = 'body > div.note > div.post > div.article > div.show-content > div > p > a'
-
-
- #只需给定一个选择路径(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
-
- import pandas as pd
- df = pd.DataFrame(get_text_link_from_sel(sel))
- df.columns = ['text', 'link']
- df.to_csv('output.csv', encoding='gbk', index=False)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。