1、先看运行效果,左边为运行后的结果,右边为爬取的网页内容
2、先展示代码
import requests
from lxml import etree
#爬取的网址
url = 'https://sh.fang.anjuke.com/?from=navigation'
#请求头
header={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"}
html = requests.get(url,headers=header).text
etree_html = etree.HTML(html)
content = etree_html.xpath('//*[@id="container"]/div[2]/div[1]/div[3]/div/div/a[1]/span/text()')
for each in content:
try:
replace = each.replace('\n', '').replace(' ', '')
if replace == '\n' or replace == '':
continue
else:
print(replace)
except IndexError:
pass
3、我们需要特别注意的就是这里
4、这个怎么获取呢,往下看;在要爬取的网页中按 f12 调出控制台,看一号箭头点击,然后指向二号箭头,就会跳出三号箭头的内容
5、在三号箭头单机右键,光标移动至复制,然后点击复制 XPath ,之后粘贴到代码当中即可
6、此时运行 python 脚本后只能获取一个,怎样获取多个呢?往下看,这是我复制了两个标题后的内容,我们可以发现在倒数第二个 div[] 中的下标不同,同理在 python 代码中只要将这个 div 后的 [] 去掉即可,像下方第二图即可
7、粘贴好后还不能爬取到内容,我们需要在粘贴好的 XPath 的后方加上 /text() 才可以爬取到内容
8、切记现在好多网站都有反爬虫机制,爬取几次后就受到了限制不能再进行爬取,需要等待一段时间后才能再次爬取
9、穿插一些爬虫的法律问题
其爬虫下载数据,一般而言都不违法,因为爬虫爬取的数据同行也是网站上用户打开页面能够看到的数据,但是如果符合下列条件的网站进行强行数据采集时,会具有法律风险
- 采集的站点有声明禁止爬虫采集时。
- 网站通过Robots协议拒绝采集时。
10、总之在爬取数据前,一定要查询好相关信息,以避免不必要的麻烦