python新闻爬虫实战

新闻爬虫需求及实现思路

需求:将新浪新闻首页(http://news.sina.com.cn/)所有新闻都爬到本地。
思路:先爬首页,通过正则获取所有新闻链接,然后依次爬各种新闻,并存储到本地。

代码

from urllib import request, error
import re

home_url = 'https://blog.csdn.net/'
# 伪装浏览器请求
headers = ('User-Agent',
           'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36')
opener = request.build_opener()
opener.addheaders = [headers]
# 全局添加浏览器伪装
request.install_opener(opener)
data = request.urlopen(home_url).read()
# 解编码
data = data.decode('utf-8', 'ignore')
# 提取首页所有文章的url
reg = 'https://blog.csdn.net/.+?"'
urls = re.compile(reg).findall(data)

# 循环爬取urls中的文章地址
count = 0
for url in urls:
    try:
        file_name = './data/csdn_' + str(count) + '.html'
        request.urlretrieve(url, file_name)
        count = count + 1
    except error.URLError as err:
        if hasattr(err, 'code'):
            print(err.code)
        if hasattr(err, 'reason'):
            print(err.reason)

作业

爬取CSDN博客http://blog.csdn.net/首页显示的所有文章,每个文章内容单独生成一个本地网页存到本地中。
难点:浏览器伪装、循环爬各文章。
思路:先爬取首页,然后通过正则筛选出所有文章url,然后通过循环分别爬取这些url到本地。

from urllib import request, error
import re

home_url = 'https://blog.csdn.net/'
# 伪装浏览器请求
headers = ('User-Agent',
           'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36')
opener = request.build_opener()
opener.addheaders = [headers]
data = opener.open(home_url).read()
# 解编码
data = data.decode('utf-8', 'ignore')
# 提取首页所有文章的url
reg = 'https://blog.csdn.net/.+?"'
urls = re.compile(reg).findall(data)

# 循环爬取urls中的文章地址
count = 0
for url in urls:
    try:
        file_name = './data/csdn_' + str(count) + '.html'
        request.urlretrieve(url, file_name)
        count = count + 1
    except error.URLError as err:
        if hasattr(err, 'code'):
            print(err.code)
        if hasattr(err, 'reason'):
            print(err.reason)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值