百度新闻结果爬虫

1. 获取新闻结果页面内容

在百度新闻搜索“清华大学”,得到页面图如下:

#百度新闻搜索--清华大学#获取对应页面的所有相关信息
import requests
from bs4 import BeautifulSoup as BSheaders={'user-agent':'xxxxxx','cookies':'XXXX'}#headers内容自行修改url='https://www.baidu.com/s?ie=utf-8&medium=0&rtt=1&bsst=1&rsv_dl=news_t_sk&cl=2&wd=%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6&tn=news&rsv_bp=1&rsv_sug3=26&rsv_sug1=20&rsv_sug7=101&oq=&rsv_sug2=0&rsv_btype=t&f=8&inputT=8176&rsv_sug4=8910'r=requests.get(url,headers=headers).text
#print(r)
soup=BS(r,'lxml')
#print(soup)
results=soup.find_all(class_='result-op c-container xpath-log new-pmd')

结果如下(可以通过浏览器“检查”源代码对比):

2. 解析得到新闻链接地址

使用beautiful soup库来解析
因为想要获取具体每条新闻的内容,所以需要对应每条新闻的链接

#获取页面中所有新闻具体页面的链接(以第一页百度结果为例)for item in results:#print(type(item))#print(item)temp=item.find_all(class_='c-span-last c-span9')for j in temp:print(type(j))s=j.find(name='a')#print(s)#print(type(s))link=j.find(name='a').attrs['href']print(link)#link=s.find(attrs='herf')print('\n')
#dds=soup.find_all(name='dd')

结果如下:

3.获得具体新闻内容

#获取新闻的具体信息(以第一条新闻为例)detail_url='http://cache.baidu.com/c?m=-32eIXUisfxfQxuzO9sCEVEMBhuSktFgmHnI0Y6udPYqB2h1lNRmpLshO-L7TDiYm8uFJXegjZP-fpcIX8ySqZfYlfSSAbcmUe_jgh08xPNJ7wbvnk_uSSkfDEme0fYzVaBpPJTrNnZqqH4qf6GFmsEiPf0le4C6X2AQePbw8jbDg8gYUKhoe5_k7d5vV5fcPinhjx1D77TZV8aazuKQjvYk7o9ICYECnmkCTHdXSXC&p=8b2a970599934eae44a4cf0c44&newp=882a945dce8409fc57ef87666153d8265f15ed6228818b783b83d309c839074e4765e7b121251707d7ce68216cee1e1ee5a76a242f1b67ff&s=eccbc87e4b5ce2fe&user=baidu&fm=sc&query=%C9%CF%BA%A3%CD%E2%B9%FA%D3%EF%B4%F3%D1%A7&qid=ce088f4600001982&p1=1'
#上面模块获取的链接地址detail_r=requests.get(detail_url,headers=headers)
detail_r.encoding='gb18030'#utf-8和gbk抽风型乱码
detail_r=detail_r.text
#print(detail_r)
detail_soup=soup=BS(detail_r,'lxml')#新闻标题
title=detail_soup.find(name='title').text
print('title:\n',title)#新闻段落内容
paras=detail_soup.find_all(name='p')#class_='article-content'
print('\n\ncontent:')
for para in paras:print(para.text)

第一条新闻爬到的具体内容如下(只有文字):

对比原新闻内容:
附上链接:https://baijiahao.baidu.com/s?id=1689931509538026165&wfr=spider&for=pc

4.新闻循环

这里的循环主要是关于【1.获取新闻结果页面内容】的页面循环
在此简单列举结果中几页的URL链接找规律:

【可以发现,控制页数的主要是’pn’这个参数,步长为10,且第一页用上这个参数也能正常打开】

first_page='https://www.baidu.com/s?ie=utf-8&medium=0&rtt=1&bsst=1&rsv_dl=news_t_sk&cl=2&wd=%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6&tn=news&rsv_bp=1&rsv_sug3=26&rsv_sug1=20&rsv_sug7=101&oq=&rsv_sug2=0&rsv_btype=t&f=8&inputT=8176&rsv_sug4=8910'
second_page='https://www.baidu.com/s?ie=utf-8&medium=0&rtt=1&bsst=1&rsv_dl=news_b_pn&cl=2&wd=%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6&tn=news&rsv_bp=1&rsv_sug3=26&rsv_sug1=20&rsv_sug7=101&oq=&rsv_sug2=0&rsv_btype=t&f=8&inputT=8176&rsv_sug4=8910&x_bfe_rqs=03E80000001&x_bfe_tjscore=0.000000&tngroupname=organic_news&newVideo=12&pn=10'
third_page='https://www.baidu.com/s?ie=utf-8&medium=0&rtt=1&bsst=1&rsv_dl=news_b_pn&cl=2&wd=%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6&tn=news&rsv_bp=1&rsv_sug3=26&rsv_sug1=20&rsv_sug7=101&oq=&rsv_sug2=0&rsv_btype=t&f=8&inputT=8176&rsv_sug4=8910&x_bfe_rqs=03E80000001&x_bfe_tjscore=0.000000&tngroupname=organic_news&newVideo=12&pn=20'

5. 整合打包代码

#百度新闻--清华大学#获取对应页面的所有相关信息
import requests
from bs4 import BeautifulSoup as BSdef get_results(url):headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36','cookies':'uuid_n_v=v1; uuid=8491C3D0DB0B11EA982967E84AE799F96B710E8ADB964B7393E85848802CDB45; _csrf=ab75496dbf4192156252ab4c0a053942399034b35287c5ece269e7e670025c64; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1597065310; mojo-uuid=016cb03d7502b0642784e03273d253f9; mojo-session-id={"id":"5123a36ac0806ebcc2b03bd8831d15d7","time":1597065312966}; mojo-trace-id=3; Hm_lpvt_703e94591e87be68cc8da0da7cbd0be2=1597065315; _lxsdk_cuid=173d882c97bc8-0ad35c92cf637f-f7d123e-144000-173d882c97b48; _lxsdk=8491C3D0DB0B11EA982967E84AE799F96B710E8ADB964B7393E85848802CDB45; __mta=242456893.1597065316852.1597065316852.1597065316852.1; _lxsdk_s=173d882c97d-7d1-f61-d72%7C%7C2'}r=requests.get(url,headers=headers).text#print(r)soup=BS(r,'lxml')#print(soup)results=soup.find_all(class_='result-op c-container xpath-log new-pmd')return resultsdef get_detail_link(current_results):#获取页面中所有新闻具体页面的链接detail_link=[]for item in current_results:#print(type(item))#print(item)temp=item.find_all(class_='c-span-last c-span9')for j in temp:#print(type(j))s=j.find(name='a')#print(s)#print(type(s))link=j.find(name='a').attrs['href']detail_link.append(link)return detail_linkdef get_detail_info(detail_url):#获取新闻的具体信息detail_r=requests.get(detail_url,headers=headers,timeout=60)#detail_r.encoding='gb18030'#utf-8和gbk抽风型乱码detail_r.encoding=detail_r.apparent_encoding#防止结果乱码detail_r=detail_r.text#print(detail_r)detail_soup=soup=BS(detail_r,'lxml')#新闻标题title=detail_soup.find(name='title').text#print('title:\n',title)#新闻段落内容paras=detail_soup.find_all(name='p')#class_='article-content'content=''#print('\n\ncontent:')for para in paras:content+=para.text#print(para.text)return [title,content,detail_url]base_url='https://www.baidu.com/s?ie=utf-8&medium=0&rtt=1&bsst=1&rsv_dl=news_t_sk&cl=2&wd=%E6%B8%85%E5%8D%8E%E5%A4%A7%E5%AD%A6&tn=news&rsv_bp=1&rsv_sug3=26&rsv_sug1=20&rsv_sug7=101&oq=&rsv_sug2=0&rsv_btype=t&f=8&inputT=8176&rsv_sug4=8910'import time
from tqdm import trange
import random
N=5#爬取前10页的新闻
all_info_results=[]
for k in trange(N):#百度新闻结果页 循环,进度条打印page=k*10url=base_url+'&pn='+str(page)#print(url)results=get_results(url)detail_urls=get_detail_link(results)for detail_link in detail_urls:time.sleep(0.5)#随机睡眠时间all_info_results.append(get_detail_info(detail_link))
#print(all_info_results)import pandas as pd
df = pd.DataFrame(all_info_results) #列表转为dataframe格式存储数据
df.columns=['title','contents','link']
'''save_path='XXX'
df.to_csv(save_path,encding='gb18030',index=False)#导出为csv格式'''df

最终结果(开头的千篇一律不是问题):

》》》最后,无论python还是爬虫都刚刚起步,如有问题欢迎指出《《《
》》》》》》》欢迎更多关于爬虫方面的交流《《《《《《《《《《

python3-爬虫-百度新闻结果相关推荐

  1. java 爬虫 百度新闻_基于HttpClient实现网络爬虫~以百度新闻为例

    在曾经的工作中,实现过简单的网络爬虫,没有系统的介绍过,这篇博客就系统的介绍以下怎样使用java的HttpClient实现网络爬虫. 关于网络爬虫的一些理论知识.实现思想以及策略问题.能够參考百度百科 ...

  2. 新闻网页制作源代码_Python爬虫百度新闻标题,并且做简单的数据分析!挺简单的

    需要下载的库 我所用的python版本为: Python 3.7.4 获取新闻信息需要的库: beautifulsoup4,request,re: 信息存储需要的库(获取信息存在csv文件中): cs ...

  3. python爬虫爬取新闻标题及链接_网络爬虫百度新闻标题及链接爬取

    1.主题:百度新闻爬取 2. python代码: import requests from bs4 import BeautifulSoup def getHTMLText(url): try: r ...

  4. Python爬虫百度新闻标题,并且做简单的数据分析!挺简单的

    需要下载的库 我所用的python版本为: Python 3.7.4 获取新闻信息需要的库: beautifulsoup4,request,re: 信息存储需要的库(获取信息存在csv文件中): cs ...

  5. python3爬虫---百度百科(疾病信息)

    一.问题描述 之前爬虫过程主要存在两个个问题: (1)爬取到网页源码之后,没有解析,直接利用正则表达式抓取信息,这样做起来比较费劲,容易造成信息抓取不全面,同时,所有页面链接都是根据链接规律自建的,没 ...

  6. Python爬虫百度新闻标题

    原文:https://blog.csdn.net/weixin_43881394/article/details/108200983 新学requests-html模块 import pandas a ...

  7. Python爬虫实战项目:简单的百度新闻爬虫

    这个实战例子是构建一个大规模的异步新闻爬虫,但要分几步走,从简单到复杂,循序渐进的来构建这个Python爬虫 本教程所有代码以Python 3.6实现,不兼顾Python 2,强烈建议大家使用Pyth ...

  8. python爬百度新闻_13、web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息...

    crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息, ...

  9. python爬虫案例——python爬取百度新闻RSS数据

    全栈工程师开发手册 (作者:栾鹏) python教程全解 各RSS网站参考http://blog.csdn.net/luanpeng825485697/article/details/78737510 ...

  10. 百度新闻爬虫搜索引擎实战---爬虫篇(2)

    爬虫部分 新闻链接爬取(2) 书接上回,我们获取到了使用动态加载技术加载的新闻链接,但是,有些不是动态加载的新闻链接,我们还没有处理.我们将doc类型文档拷贝下来,放入HBuilder X编辑器中,然 ...

最新文章

  1. 推荐一个网站拿下机器学习优质资源!搜索效率极大提高
  2. mysql const ref_mysql explain详解
  3. linux之NTP服务
  4. mysql 主从复制介绍_MySQL 主从复制介绍
  5. ORACLE使用copy方式存储迁移,详细讲解Oracle数据库的数据迁移方法
  6. GSM信道(控制信道和业务信道)转自搜狗百科
  7. Q 系列PLC ST 语言编程笔记
  8. AXURE版富文本输入框(富文本编辑器)教程+下载
  9. [TeXPage] 打造好用的 LaTeX 在线编辑器
  10. 程序员在囧途之风投五宗罪
  11. 西瓜书笔记16-2:逆强化学习
  12. J2ME 发送彩信问题,请个位高手帮忙,长时间在线等待
  13. spacy 英文模型下载_英语文本处理工具库2 — spaCy
  14. 莫纳什计算机专业强吗,2020年莫纳什大学计算机科学专业好不好
  15. 使用云效应用交付平台 AppStack进行应用管理
  16. 加入美团2021届北斗计划,用科技定义未来生活
  17. kendoUI模板概述(template)
  18. javaee笔记(10)JSF
  19. 如何在 JupyterLab 中把 ipykernel 切换到不同的 conda 虚拟环境?
  20. 1100 校庆分数 25

热门文章

  1. java中的mybatis作用_mybatis作用、基本使用、小结
  2. 学AI买计算机,如何用免费GPU学习AI算法?这篇大集锦不要错过
  3. Android 实现三种响铃模式的切换
  4. 微服务开放平台接口设计
  5. angular学习笔记(十四)-$watch(3)
  6. DAO概念板块代币大盘点,你又把握了几个?
  7. MySQL忘记密码怎么办
  8. 埃斯顿机器人 王杰高_埃斯顿机器人总经理王杰高受邀出席2018中国机器人产业发展大会...
  9. python发邮件代码要下载qq邮箱吗_python登录QQ邮箱发送QQ邮件代码
  10. 单片微型计算机系统应用和开发特点,单片微机原理及应用 徐春辉第1.2.3章 习题答案...