找回密码
 立即注册
查看: 195|回复: 0

如何使用python+urllib库+代理IP爬取新闻数据

[复制链接]
发表于 2023-3-8 18:28 | 显示全部楼层 |阅读模式
每天的时事新闻都是大家关注度最高讨论量最大的,这时对于新闻行业来说,掌握第一手新闻资料,独家报道是很厉害事,特别是像娱乐圈,掌握第一手资料的狗子简直可以成为了大家吃瓜的导向。所以怎么去获取第一手资料呢,今天就分享下怎么用Python3网络爬虫爬取腾讯新闻内容。


QQ图片20230307151817.png

要抓取新闻,首先得有新闻源,也就是抓取的目标网站。国内的新闻网站,从中央到地方,从综合到垂直行业,大大小小有几千家新闻网站。百度新闻(news.baidu.com)收录的大约两千多家。那么我们先从百度新闻入手。
数据需求是:从门户网站爬取新闻,将新闻标题,作者,时间,内容保存到本地txt中.
爬虫流程如下:
1、模拟请求网页,模拟浏览器,打开目标网站。
2、获取数据,打开网站之后,就可以自动化的获取我们所需要的网站数据。
3、保存数据,拿到数据之后,需要持久化到本地文件或者数据库等存储设备中。
那么我们该如何使用 Python 来编写自己的爬虫程序呢,在这里我要重点介绍一个 Python 库,urllib库。为了防止目标网站的反爬机制,这里我们可以选择使用urllib+代理IP来获取数据,并且还使用了threading库和time库,使其能够实现多线程采集。代码示例如下:
! -- encoding:utf-8 -- from urllib import request import threading # 导入threading库,用于多线程 import time # 导入time库,用于延时

要访问的目标页面

targetUrl = “news.baidu.com/”
代理服务器(产品官网 www.16yun.cn)

proxyHost = “t.16yun.cn” proxyPort = “31111”
代理验证信息

proxyUser = “www.16yun.cn” proxyPass = “16ip”

proxyMeta = “http://%(user)s:%(pass)s@%(host)s:%(port)s” % { “host” : proxyHost, “port” : proxyPort, “user” : proxyUser, “pass” : proxyPass, }

proxy_handler = request.ProxyHandler({ “http” : proxyMeta, “https” : proxyMeta, })

opener = request.build_opener(proxy_handler)

request.install_opener(opener)
定义一个锁对象,用于控制每200毫秒只能请求一次

lock = threading.Lock()
定义一个函数,用于发起请求和打印响应

def get_url(): # 获取锁,如果锁被占用,就等待,直到锁释放 lock.acquire() resp = request.urlopen(targetUrl) # 发起请求 # 判断状态码是否为200,如果不是,打印错误信息 if resp.status_code == 200: print(resp.read()) # 打印响应内容 else: print(f"请求失败,状态码为{resp.status_code}") # 打印错误信息 time.sleep(0.2) # 延时200毫秒 # 释放锁,让其他线程可以获取锁 lock.release()
定义一个列表,用于存放线程对象

threads = []
创建10个线程,每个线程执行get_url函数

for i in range(10): t = threading.Thread(target=get_url) # 创建线程对象 threads.append(t) # 将线程对象添加到列表中
启动所有线程

for t in threads: t.start()
等待所有线程结束

for t in threads: t.join()

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-17 16:24 , Processed in 0.088072 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表