开篇--Python获取新闻列表

新手中的新手,为了学习,尝试从这里出发---

举个例子:

新闻网站https://news.qq.com/,通过查看网页发现,网址进去之后,分页是下拉加载,只能通过浏览器的开发者工具查看分页网址

是Ajax形式的get带参数的请求方式,获取响应内容不再是页面数据,而是json字符串 ,通过参数offset和limit控制条数,获取不同的新闻内容,上代码

import requests
from bs4 import BeautifulSoup

from xlwt import *
import json

# 这种形式,在这里不能用
# user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'

headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
}
url = 'https://i.news.qq.com/trpc.qqnews_web.kv_srv.kv_srv_http_proxy/list?'

params = {
    'sub_srv_id': '24hours',
    'srv_id': 'pc',
    'offset': '0',
    'limit': '100',
    'strategy': '1',
    'ext': '{"pool":["top"],"is_filter":7,"check_type":true}'
}





# 保存到Excel
def save_excel(self):
    num = 1
    title_file = Workbook(encoding="utf-8")  # 存为Excel,以 utf-8 编码打开
    table = title_file.add_sheet('data')  # 打开“data” 工作薄
    # 存入表头
    table.write(0, 0, "发布时间")
    table.write(0, 1, "标题")
    table.write(0, 2, "内容地址")
    # all_data = self.send_url()  # 调用send_url()中 yield 的返回值
    for data in self:  # data 数据为元组类型
        # href = url + data.get('href')
        # title = data.string
        table.write(num, 0, data["publish_time"])
        table.write(num, 1, data["title"])
        table.write(num, 2, data["url"])
        print
        "saving done..."
        num += 1
    title_file.save("002.xls")  # 保存文件


# Ajax获取分页数据
def get_ajax():
    # 发起ajax的get请求还是用get方法
    response = requests.get(url=url, params=params, headers=headers)

    # 获取响应内容:响应内容为json字符串
    data = response.text
    # 把Json格式字符串解码转换成Python对象 从json到python的类型
    data = json.loads(data)
    # 操作json,获取元素
    data = data["data"]
    data = data["list"]
    save_excel(data)
    #for data_dict in data:
    #    print(data_dict["title"], data_dict["url"])



if __name__ == "__main__":
    get_ajax()

上面使用的 requests  BeautifulSoup需要安装一下

pip install requests
 
easy_install requests

这两种方式都可以安装。

 

ps:当然后续可以保持到文件中,目前还没有封装,继续。。。 

 

已更新保持到Excel中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值