近几天在研究爬虫,但是基础好像过于薄弱。
下面整理一下爬虫的库。
首先是介绍一般爬虫也够用的一些python库
先是 urllib 然后 requests 然后 BeautifulSoup 最后 selenium.
urllib -- 是Python的一个扩展库,用于对url进行处理
在这个爬虫程序中,我们导入了 urllib 库的request模块,该模块中定义了用于访问 url 的 urlopen() 方法,该方法返回一个 HttpResponse 类对象。
urlopen 方法
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
HttpResponse类
有如下的方法:
getcode() 返回响应的 HTTP 状态代码,200或404
geturl() 返回请求的 url,通常用于确定是否遵循重定向
info() 以 email.message_from_string() 实例的形式返回页面的元信息
read() 和 readline() 用于对 HttpResponse 类型数据进行读取操作。不同的是前者读取全部内容,后者只读取某一行
requests --
是基于 urllib 开发的另外一个常用的爬虫工具,相比起 urllib 更为简洁
常用方法有 get(url) 返回response对象
当访问 Response.text 时,会使用其推测的文本编码,然后以这种编码方式输出响应内容。当然你想要的看字节形式的内容,也可以通过访问 Response.content 来获取。除此之外,还有内置的 JSON 解码器 Response.json 等
BeautifulSoup
即为一个解析器的库,可以解析 html 或 xml 文件,提供了许多可以高效提取数据的方法,让提取数据变得十分简单、灵活。而且 Beautiful Soup 可以自动把 html 和 xml 文件编码格式转化成 Unicode,输出时转化成 utf-8,不需要再手动转码。
常用方法有 find_all(),该方法用于搜索当前 tag 的所有子孙结点,并以列表形式返回匹配到的所有内容。
具体的之后会有一个专门的博客介绍,所以当前两个 得到response后,再由 BeautifulSoup 来解析。
Selenium
selenium 是我最开始接触的爬虫库,可以通过模拟人的操作有效的防反爬,但是速度比较慢。
一般配合 chrome或者firefox 使用。
首先先声明且调用浏览器需要通过 webdriver
from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
然后通过浏览器跳转到 指定 url
from selenium import webdriver#导入库
browser = webdriver.Chrome()#声明浏览器
url = 'https:www.baidu.com'
browser.get(url)#打开浏览器预设网址
print(browser.page_source)#打印网页源代码
browser.close()#关闭浏览器
然后一般需要爬数据,则找到数据的 css 或者 xpath 来定位数据,但是这个要求数据在静态页面上,不是动态加载的。
之后还有一些更新的爬虫库或者框架,比如 Scrapy/botflow等,想仔细了解了解,之后博客应该会更新。
一般的爬虫,以上库就可以了。