Python 爬虫爬取新浪新闻 BeautifulSoup+requests

本文介绍了使用Python3.6和Pycharm进行爬虫学习的过程,主要目标是抓取新浪新闻的文本内容和标题。通过引入requests和BeautifulSoup库,详细讲解了爬虫实现的步骤,并提到了更新pip至10.0.1以及将数据导出到Excel的技巧。此外,还给出了获取urlFormat的方法和BeautifulSoup的帮助文档链接。

    最近在学习Python爬虫程序,工具是pycharm,Python3.6。

    因为我最终需要的是文本内容和文本标题所以实验以获取新浪新闻的文本和标题为例。

    实现过程中加载的模块包括以下:


  需要注意的是pip版本应当更新为10.0.1

     完整代码如下:

import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re
import json
import pandas

def getNews(newsurl):

    res = requests.get(newsurl)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    title = soup.select('title')[0].text
    article = soup.find(id="article").get_text();

    return title, article
def parseListLinks():
    urlFormat = 'http://api.roll.news.sina.com.cn/zt_list?channel=news&cat_1=gnxw&cat_2==gdxw1||=gatxw||=zs-pl||=mtjj&level==1||=2&show_ext=1&show_all=1&show_num=22&tag=1&format=json&page=2&callback=newsloadercallback&_=1527167224125'
    url = []
    for i in range(1, 10):
        res = requests.get(urlFormat.format(i))
        jd = json.loads(res.text.lstrip('  newsloadercallback(').rstrip(');'))
        url.extend(getUrl(jd))  

    return url
def getUrl(jd):
    url = []
    for i in jd['result']['data']:
        url.append(i['url'])
    return url

def getNewsDetial():
    title_all = []
    article_all = []
    url_all = parseListLinks()
    for url in url_all:
        title_all.append(getNews(url)[0])
        article_all.append(getNews(url)[1])

    total_2 = {'title':title_all,'article':article_all}
    return total_2

df = pandas.DataFrame(getNewsDetial())
print(df)
df.head()
df.to_excel('news.xlsx') #保存到news.xlsx中

     转为Excel需要pip install openpyx,运行后excel文件保存位置与代码位置相同。

     一些解释:

     urlFormat的获取过程:

     google浏览器->打开新浪网页->F12->Network->JS->Name->Preview 刷新页面


 BeautifulSoup帮助文档:

https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#id32点击打开链接




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值