网页抓取数据百度百科(网络爬虫(又被称为网页蜘蛛,网络机器人)(图))

优采云 发布时间: 2022-02-03 12:00

  网页抓取数据百度百科(网络爬虫(又被称为网页蜘蛛,网络机器人)(图))

  网络爬虫(也称为网络蜘蛛或网络机器人)是一种程序或脚本,它根据一定的规则自动爬取万维网上的信息。其他不太常用的名称是 ant、auto-index、emulator 或 worm。

  由于经常看尴尬的东西,突然想写一个抓取尴尬内容的爬虫。它可以用多种语言编写。我将在这里用 Python 编写它。以下为正式开始:

  1.知己知彼,百战百胜

  我们首先分析它的网页源代码,找到内容和图片的部分代码,比如Chrome、Firefox以及更高版本的IE浏览器,通过选择元素并使用正确的方式,可以快速帮助我们找到我们需要的代码-点击菜单:

  2.准备战斗

  接下来我们开始获取数据,我先试探性的使用 urllib.urlopen('

  3.万事俱备,只欠东风

  有了之前的准备,我可以随心所欲地获取数据,随心所欲地玩。现在我只需要内容和图像部分的数据。拦截的方法有很多,比如find函数和正则表达式。为了显得高大上,我选择了正则表达式进行拦截:

  1reg = r'\s+(.+)\s+|src="(http://pic\.qiushibaike\.com/system/pictures.+?.jpg)"'

2

  4.胜利

  我得到了具体的数据,最后我写了一个网页来显示数据。

  这是完整的源代码:

  1import urllib2

2import re

3import sys

4

5def getHtml(url):

6 '获取页面内容'

7 request = urllib2.Request(url)

8 request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36')

9 return urllib2.urlopen(request).read()

10

11def getArticle(html):

12 '获取内容和图片数据'

13 reg = r'\s+(.+)\s+|src="(http://pic\.qiushibaike\.com/system/pictures.+?.jpg)"'

14 pattern = re.compile(reg)

15 article_list = re.findall(pattern, html)

16 return [(article.decode('utf-8'), img) for (article, img) in article_list]

17

18def generateHtml(pageSize):

19 '在本地生成html页面'

20 for pageNum in range(1, pageSize + 1):

21 url = 'http://www.qiushibaike.com/8hr/page/' + str(pageNum)

22 article_list = getArticle(getHtml(url))

23 html = '\n\n\t\n\t\t\n\t\t糗百第' + str(pageNum) + '页\n\t\n\t\n'

24 for (article, img) in article_list:

25 if article:

26 html += &#x27;\t\t<p>&#x27; + article + &#x27;\n&#x27;

27 if img:

28 html += &#x27;\t\t

  &#x27;/spanspan /spanspan class=\n&#x27;

29 html += &#x27;\n\t\n&#x27;

30 file = open(u&#x27;糗百第&#x27; + str(pageNum) + u&#x27;页.html&#x27;, &#x27;w&#x27;)

31 file.write(html)

32 file.close()

33

34#解决编码问题

35stdout = sys.stdout

36stdin = sys.stdin

37stderr = sys.stderr

38reload(sys)

39sys.stdout = stdout

40sys.stdin = stdin

41sys.stderr = stderr

42sys.setdefaultencoding(&#x27;utf-8&#x27;)

43#开始

44pageSize = raw_input(u&#x27;请输入获取前几页:&#x27;.encode(&#x27;gbk&#x27;))

45try:

46 generateHtml(int(pageSize))

47 print u&#x27;获取成功!&#x27;

48except:

49 print u&#x27;输入有误!&#x27;

50raw_input(u&#x27;\n按回车退出&#x27;.encode(&#x27;gbk&#x27;))

51

</p>

  生成网页截图:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线