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)

你可能感兴趣的:(爬虫)