须要Python源码、PDF、视频资料能够点击下方连接获取html
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef复制代码
运行环境python
python3.7正则表达式
Windowschrome
vscode浏览器
运行依赖包bash
requests ( pip install requests 便可安装)工具
reui
爬虫能够简单的分为:url
获取数据spa
分析数据
存储数据
简单来讲一个网页是由一个html文件解析构成,咱们须要获取这个文本内容。
每一个浏览器均可以经过开发者工具获取到文本内容,以chrome为例,打开网页后,右键->检查。 右边的 Elements 就是咱们要下载的数据。
让咱们看看 requests 是如何获取这个数据的。
url='http://lamyoung.com/';
html=requests.get(url);
if html.status_code == 200:
html_bytes=html.content;
html_str=html_bytes.decode();复制代码
此次咱们用正则表达式去解析源数据,截取到咱们须要。 如今咱们的目标是抓取博客的文章标题和连接,咱们能够经过刚才的开发者工具获取文章标题和连接的特征。
使用正则表达式中的 findall 把全部内容找出来,并保存在字符串中。
write_content = ''
all_items = re.findall(regex,html_str);
for item in all_items:
write_content=f'{write_content}\n{item[1]}\nhttp://lamyoung.com{item[0]}\n'复制代码
咱们能够点几个下一页,很容易发现其中的规律。
第一页:lamyoung.com/
第三页:lamyoung.com/page3/ ...
为此,咱们加个循环判断就能够啦。
index=1
while True:
page_url = '';
if index>1:
page_url=f'page{index}/'
url=f'http://lamyoung.com/{page_url}';
html=requests.get(url);
if html.status_code != 200:
print(html);
break;复制代码
在判断状态码为200时,退出循环。
此次咱们就用文本存储来结束咱们的教程吧。
with open('lamyoung_title_out.txt','w',encoding='utf-8') as f:
f.write(write_content)复制代码
.