简单分析下这个爬虫的思路,直接贴代码吧!

优采云 发布时间: 2021-05-23 05:31

  

简单分析下这个爬虫的思路,直接贴代码吧!

  Python实现采集 wordpress整个网站数据抓取工具

  我最近爱上了python,而且我真的很喜欢使用python来练习手。在上次的基础上改进代码,并实现采集 wordpress程序网站的整个站点数据的履带程序,该站点还使用WordPress,我将使用()来练习我的手!只需分析这个爬虫的想法,从首页开始,抓取href标记,然后在到达子页面后继续查找href标记,那么使用递归就很容易想到了,只需粘贴代码即可!我写了一些简单的笔记,如下所示:

  import re

import bs4

import urllib.request

url_home = 'http://www.5bug.wang/' #要采集的网站

url_pattern = url_home + '([\s\S]*)\.html' #正则表达式匹配文章页面,此处需完善为更好的写法

url_set = set()

url_cache = set()

url_count = 0

url_maxCount = 1000 #最大采集数量

#采集匹配文章内容的href标签

def spiderURL(url, pattern):

html = urllib.request.urlopen(url).read().decode('utf8')

soup = bs4.BeautifulSoup(html, 'html.parser')

links = soup.find_all('a', href = re.compile(pattern))

for link in links:

if link['href'] not in url_cache:

url_set.add(link['href'])

return soup

#采集的过程 异常处理还需要完善,对于一些加了防采集的站,还需要处理header的,下次我们再学习

spiderURL(url_home, url_pattern)

while len(url_set) != 0:

try:

url = url_set.pop()

url_cache.add(url)

soup = spiderURL(url, url_pattern)

page = soup.find('div', {'class':'content'})

title = page.find('h1').get_text()

autor = page.find('h4').get_text()

content = page.find('article').get_text()

print(title, autor, url)

except Exception as e:

print(url, e)

continue

else:

url_count += 1

finally:

if url_count == url_maxCount:

break

print('一共采集了: ' + str(url_count) + ' 条数据')

  发布于@ 2017-09-14 20:59我的八哥读书(448 5)评论(1)编辑

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线