什么是爬虫?
爬虫不是在地上在墙上爬的虫子,而是指的是网络爬虫,那么网络爬虫是什么呢?其实搜索引擎就是干这事的,网络爬虫是自动提取网页的程序,全网爬取网页内容,进行收录索引,所以SEO优化搜索引擎,就是让网络爬虫更精准的识别到我们的网站内容,提高搜索排名,增加访问流量,爬虫的用途还有很多待我一一了解与学习。
但这篇文章的内容,是介绍pythno爬虫,如何去利用python爬取网站内容,实现的方法很多,主要学习的是思路,以目前的认知,爬虫对于我来说有两种形式:
1.网站返回页面html标签,通过匹配标签进行爬取相应内容。
2.是通过网页接口返回的json数据来匹配获取。
第一种,python我常会用的lxml库中的etree工具,进行标签匹配。
第二种,常用response转json格式,进行匹配获取。
这两种形式以下先大致讲解,实战代码后续会以单独的文章进行更新,敬请期待!
访问请求页面返回的是html静态的页面资源,那么遇到html返回形式的网站,我的思路是获取html页面然后通过lxml库中的etree去匹配标签获取a标签的href属性,再根据url拼接循环请求具体页面再继续etree匹配最终获取电影的BT链接。
代码示例:
import requests
from lxml import etree
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
}
res = requests.get("https://xxxxxx", header, verify=False, timeout=5)
if res.status_code == 200:
lxml_tree = etree.HTML(res.content)
href_name = lxml_tree.xpath('//table[@class="tbspan"]//a//@href')
print(href_name)
访问请求页面返回的是json资源,那么遇到json返回形式的网站,我的思路是通过网页接口,根据接口request参数去构造我的请求,然后获取接口response,转成json格式,通过json格式去获取对应的内容,如下图,可以通过的图片key获取图片链接的value,这是爬取json形式我的常用思路。
代码示例:
import requests
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
}
params = {
'query': 'sexy',
'per_page': '20',
'page': '2',
}
response = requests.get('https://xxxxxx', params=params, headers=headers).json()
if response.status_code == 200:
print(response['results'][0]['links']['download'])
技术是一把双刃剑,就看持剑的人是怎么想的,爬虫有风险,操作需谨慎,爬虫被判刑的例子比比皆是,需谨慎。关注我,微信搜索艺说IT公众号,后续有这两种形式的python实战爬虫还有反防爬虫(反反爬虫)等技术干货,并附带源码,对你有帮助请点个赞,感谢各位帅哥美女。