python实现CSDN博客标题收集

python实现CSDN博客标题收集

使用BeautifulSoup对网页解析,再根据布局使用Tag层层搜索,找到我们所需要的元素,代码很简单。

BeautifulSoup是Python的一个库,最主要的功能就是从网页爬取我们需要的数据。BeautifulSoup将html解析为对象进行处理,全部页面转变为字典或者数组,相对于正则表达式的方式,可以大大简化处理过程。

例子中是把老罗的博客文章标题收集,由于tag嵌套导致循环重复,去重会导致效率偏低。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# encoding:utf-8
import requests
from bs4 import BeautifulSoup
import bs4
import os
from time import sleep
url_list = []
title_list=[]
blog_urls = []
collected=0
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
def add_url():
for i in range(1,11):
url_list.append("http://blog.csdn.net/Luoshengyang/article/list/"+str(i))

def collect():
global collected
for url in url_list:
html = requests.get(url, headers=headers)
html.encoding = html.apparent_encoding
soup = BeautifulSoup(html.text, 'html.parser')
for tagmain in soup.find_all('main'):
for ul in tagmain.find_all('ul'):
for li in ul.find_all('li'):
for taga in li.find_all('a'):
for h3 in taga.find_all('h3'):
if (taga['href'][0:4]=="http"):
if taga['href'] in blog_urls:
break
blog_urls.append(taga['href'])
title_list.append(h3.text.replace(' ',"").replace('\n',"").replace('\t',""))



add_url()
collect()
for i in range(len(title_list)):
print(title_list[i],blog_urls[i])

http://blog.csdn.net/kikaylee/article/details/56841789