获取新闻类网页的所有a链接
Posted wutongluo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取新闻类网页的所有a链接相关的知识,希望对你有一定的参考价值。
思路:
1.传入url
2.访问该网站,获取网站内容,使用try-except的方式
1 import re 2 import requests 3 4 5 class Spider(object): 6 """爬虫类""" 7 8 def __init__(self, url): 9 self.url = url 10 print(‘[*- 开启采集数据 -*]‘) 11 12 def visit_url(self): 13 """访问该网站,访问成功,返回网站内容""" 14 response = requests.get(url=self.url) 15 try: 16 # 用来捕捉异常, 在内部判断status_code是否等于200,如果不等于,则抛出异常 17 response.raise_for_status() 18 except Exception as e: 19 print(e) 20 return False 21 # 使用content需要解码 22 response_content = response.content.decode() 23 # replace替换 24 return response_content.replace("‘", ‘"‘) 25 26 def re_get_url(self): 27 """使用正则获取该页面的所有url地址""" 28 web_content = self.visit_url() 29 if not web_content: 30 print(‘[*-- 获取网站内容失败,采集结束 --*]‘) 31 return False 32 # 使用正则匹配路由 33 web_url = re.findall(‘[a-zA-Z]+://[^s|^"]*‘, self.visit_url()) 34 # 判断url的长度不等于0 35 if len(web_url) != 0: 36 return web_url 37 return False 38 39 def handle_static(self): 40 """主页面只选择采集可以跳转的链接,这个作为过滤列表""" 41 arr_dict = [‘jpg‘, ‘jpeg‘, ‘css‘, ‘png‘, ‘js‘, ‘#‘] 42 # 定义空列表 43 arr_list = [] 44 # 正则返回的url列表 45 arr_url = self.re_get_url() 46 if not arr_url: 47 print(‘[*-- 页面链接获取失败,采集结束 --*]‘) 48 # 如果后缀为过滤列表里的那么都判定为静态资源,不选择收录 49 # 遍历url的列表 50 for url_obj in arr_url: 51 # 定义一个标识 52 is_add = True 53 # 遍历过滤列表 54 for filter_arr_obj in arr_dict: 55 # 过滤url 56 if url_obj.find(filter_arr_obj) != -1: 57 # find找到就得到下标,找不到就返回-1 58 is_add = False 59 # 添加子链接 60 if is_add: 61 # 如果是-1就是有用的url,添加到提前定义好的空列表里 62 arr_list.append(url_obj) 63 print(arr_list) 64 65 def run(self): 66 self.handle_static() 67 68 69 if __name__ == ‘__main__‘: 70 url = ‘https://www.washingtonpost.com/‘ 71 spider = Spider(url) 72 spider.run()
以上是关于获取新闻类网页的所有a链接的主要内容,如果未能解决你的问题,请参考以下文章