python 中爬虫的运用
使用类库:
from bs4 import BeautifulSoup
import requests
import re
个人比较喜欢BeautifulSoup
url = "http://www.jianshu.com/c/2ba824b6ed53?utm_medium=index-collections&utm_source=desktop"
res = requests.get(url)
res.cencoding = 'utf-8'
soup = BeautifulSoup(res.text,"lxml")
将soup 获取到
使用正则表达式进行解析
titles_html = soup.select("#list-container > ul > li > div > a") 使用soup的选择去惊醒选择 这个可以通过浏览器的 copy selector 或者牛逼的话自己也可以写。就是div下面一层一层拨开,这里如果有id的话直接以id开头就可以
content_html = soup.select("#list-container > ul > li > div > p")
re_title = re.compile(r'target="_blank">(.*?)</a>')
re_content = re.compile(r'<p class="abstract">[\s\D]* (.*?)\n')
正则表达式的使用:
通过re.compile, r'' 这里面写正则 一般是用首尾讲去要的信息括起来,需要的信息使用() 惊醒匹配,括号里面写自己需要取得信息
这里最常用的的 . 这个 . 能够取到除了换行符之外的所有字符, * 代表任意个字符。
** 如果需要取包括换行符的字符 可以用 [\s\S]
另外人工分析的时候需要非常小心这个字符里面的东西。 分析清楚才能写出简单并且正确的正则表达式. 尤其是换行符要非常注意。
* 有几点去要注意的:
一、通过soup.select 得到的是list 而且list 里面的元素的类型 是 bs4.element.Tag 类型 ,这个类型是不能直接用正则表达式进行解析的 要使用str 将这个元素转化为String类型,这样就能够惊醒解析。
二、建议获取soup 集合后可以打印一下 第一个元素的类型和值,通过查看类型和值能够帮你更好地进行分析,然后方便写出正则表达式。