python小爬虫1.0版本

2023-2-16 09:34| 发布者: wanhu| 查看: 88| 评论: 0

摘要: 1 #coding:utf-8 2 import urllib 3 ###### 4 #爬虫v0.1 利用urlib 和 字符串内建函数 5 ###### 6 '''目标网站: 7 ''' 9 def getHtml(url): 10 # 获取网页内容 11 pag ...

1 #coding:utf-8

2 import urllib

3 ######

4 #爬虫v0.1 利用urlib 和 字符串内建函数

5 ######

6 '''目标网站:

7 '''

9 def getHtml(url):

10 # 获取网页内容

11 page = urllib.urlopen(url)

12 html = page.read()

13 return html

14

15 def content(html):

16 # 内容分割的标签

17 str = '<article class="article-content">'

18 content = html.partition(str)[2]

19 str1 = '<div class="article-social">'

20 content = content.partition(str1)[0]

21 return content # 得到网页的内容

22

23 def title(content,beg = 0):

24 # 匹配title

25 # 思路是利用str.index()和序列的切片

26 try:

27 title_list = []

28 while True:

29 num1 = content.index('】',beg)+3

30 num2 = content.index('</p>',num1)

31 title_list.append(content[num1:num2])

32 beg = num2

33

34 except ValueError:

35 return title_list

36

37 def get_img(content,beg = 0):

38 # 匹配图片的url

39 # 思路是利用str.index()和序列的切片

40 try:

41 img_list = []

42 while True:

43 src1 = content.index('src=',beg)+4

44 src2 = content.index('/></p>',src1)

45 img_list.append(content[src1:src2])

46 beg = src2

47

48 except ValueError:

49 return img_list

50

51 def many_img(data,beg = 0):

52 #用于匹配多图中的url

53 try:

54 many_img_str = ''

55 while True:

56 src1 = data.index('http',beg)

57 src2 = data.index(' /><br /> <img src=',src1)

58 many_img_str += data[src1:src2]+'|' # 多个图片的url用"|"隔开

59 beg = src2

60 except ValueError:

61 return many_img_str

62

63 def data_out(title, img):

64 #写入文本

65 with open("/home/qq/data.txt", "a+") as fo: # 在你电脑运行的时候这里的地址改一下

66 fo.write('\n')

67 for size in range(0, len(title)):

68 # 判断img[size]中存在的是不是一个url

69 if len(img[size]) > 70:

70 img[size] = many_img(img[size])# 调用many_img()方法

71 fo.write(title[size]+'$'+img[size]+'\n')

72

73

74 #html = getHtml("

/

")

75 #content = content(html)

76 #title = title(content)

77 #img = get_img(content)

78 #data_out(title, img)

79 # 实现了爬的单个页面的title和img的url并存入文本

80

81 def main_content(html):

82 # 首页内容分割的标签

83 str = '<div class="content">'

84 content = html.partition(str)[2]

85 str1 = '</div>'

86 content = content.partition(str1)[0]

87 return content # 得到网页的内容

88

89 #

90

91 #进page_url:

/

" title="[博海拾贝0620期]今天没吃粽子的不止我一个人吧 |

92

93 # 新增一个参数order,默认为20

94 def page_url(content, order = 20, beg = 0):

95 try:

96 url = []

97 i = 0

98 while i < order:

99 url1 = content.index('<h2><a href="',beg)+13

100 url2 = content.index('" ',url1)

101 url.append(content[url1:url2])

102 beg = url2

103 i = i + 1

104 return url

105 except ValueError:

106 return url

107

108 def get_order(num):

109 # num代表获取的条目数量

110 url_list = []

111 page = num / 20

112 order = num % 20 # 超出一整页的条目

113 if num < 20: # 如果获取的条目数量少于20(一页20个),直接爬取第一页的num条

114 url = '

http://bohaishibei.com/post/category/main

'

115 main_html = getHtml(url)

116 clean_content = main_content(main_html)

117 url_list = url_list + page_url(clean_content, num)

118 for i in range(1, page+1): # 需这里需要尾巴

119 url = '

http://bohaishibei.com/post/category/main/page/%d

' % i # 爬取整页的条目

120 main_html = getHtml(url)

121 clean_content = main_content(main_html)

122 url_list = url_list + page_url(clean_content) #获取整夜

123

124 if (i == page)&(order > 0): # 爬到最后一页,如果有超出一页的条目则继续怕order条

125 url = '

http://bohaishibei.com/post/category/main/page/%d

' % (i+1)

126 main_html = getHtml(url)

127 clean_content = main_content(main_html)

128 url_list = url_list + page_url(clean_content, order)

129 #print len(page_url(clean_content, order))

130 return url_list

131

132 #html = getHtml("

http://bohaishibei.com/post/10475/

")

133 #content = content(html)

134 #title = title(content)

135 #img = get_img(content)

136 #data_out(title, img)

137 # 实现了爬的单个页面的title和img的url并存入文本

138

139 order = get_order(30) # get_order方法接受参数,抓取多少期的数据

140 for i in order: # 遍历列表的方法

141 html = getHtml(i)

142 content_data = content(html)

143 title_data = title(content_data)

144 img_data = get_img(content_data)

145 data_out(title_data, img_data)

146

147 #print len(get_order(21))

148 #main_html = getHtml("

http://bohaishibei.com/post/category/main/page/6/

")

149 #clean_content = main_content(main_html)

150 #str = page_url(clean_content)

151 #print str

152 #print "---------"

153 #print len(str)


路过

雷人

握手

鲜花

鸡蛋
版权声明:免责声明:文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递 更多信息之目的, 并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。
已有 0 人参与

会员评论

相关分类

 万奢网手机版

官网微博:万奢网服务平台

今日头条二维码 1 微信公众号二维码 1 抖音小程序二维码 1
上海万湖珠宝贸易有限公司 地址:上海市宝山区共和新路4727号新陆国际大厦1003-1007室 网站经营许可证 备案号:沪ICP备11005343号-12012-2019
万奢网主要专注于手表回收,二手名表回收/销售业务,可免费鉴定(手表真假),评估手表回收价格,正规手表回收公司,宝山实体店,支持全国范围上门回收手表
返回顶部