实战1-python爬取安全客新闻

一般步骤:确定网站--搭建关系--发送请求--接受响应--筛选数据--保存本地

1.拿到网站首先要查看我们要爬取的目录是否被允许

一般网站都会议/robots.txt目录,告诉你哪些地址可爬,哪些不可爬,以安全客为例子

2. 首先测试在不登录的情况下是否请求成功

可见,该请求成功;有很多网站在没有登录的情况下是请求失败的,这时需要添加请求头信息,

注意:有的cookie 会根据时间戳生成,有的会失效

haders={},

2.1、首先 F12 到 Network 下,F5刷新 ,复制 Requests Headers然后把它转换成 json 格式

2.1.1 Requests Headers 转 json 格式有很多种方法

  1. 在线转 json 格式的网站:在线HTTP请求/响应头转JSON工具 - UU在线工具

2.如果电脑没网 在终端下载:pip install feapder

feapder create -j

req=requests.get(url=url).text 是把所有的文本都提取出来,会很乱,所有我们需要筛选,整理一下

可以发现,我们需要的数据在 a 标签中

<a target="_blank" href="/post/id/291754">苹果委托进行数据泄露研究,以强调端到端加密的必要性</a>

数据多了id位数也可能会增加;也可以把id写死,根据291754是个六位数,所以 \d{6}只匹配 id是六位数的。

python 复制代码
Title=re.findall(r'<a target="_blank" href="/post/id/\d+">(.*?)</a>',req)

\d+

注意代码格式

range() 取值 [ )

最终代码:

python 复制代码
import re
import requests
#headers={}
url='https://www.anquanke.com/'
req=requests.get(url=url).text
# print(req)
dict={}
for i in range(1,20):
    dict['Title']=re.findall(r'<a target="_blank" href="/post/id/\d+">(.*?)</a>',req)[i]
    dict['url']=re.findall(r'<a target="_blank" href="(/post/id/\d+)">',req)[i]
    print(dict)

优化后的代码:

python 复制代码
import re
import requests
url='https://www.anquanke.com/'
req=requests.get(url=url)
print(req.status_code)
req=req.text
dict={}
Title=re.findall(r'<a target="_blank" href="(/post/id/\d+)">(.*?)</a>',req)
# print(Title)
for title in Title:
    dict['Title']=title[1]
    dict['url']=url+title[0]
    print(dict)
相关推荐
2301_775148153 分钟前
如何管理RAC归档日志_共享存储中的FRA配置与双节点访问
jvm·数据库·python
Ulyanov7 分钟前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio组件化开发与UI组件库构建
开发语言·python·qt·ui·雷达电子战系统仿真
词元Max8 分钟前
2.8 pydantic 数据校验:AI 开发的隐形利器
开发语言·人工智能·python
qq_3300379911 分钟前
php怎么实现接口请求日志记录_php如何自动记录入参出参与耗时
jvm·数据库·python
Python私教13 分钟前
Hermes Agent 记忆系统详解:MEMORY.md 与跨会话持久化
python
2401_8653825013 分钟前
各省政务信息化项目验收材料清单汇总及差异分析
java·开发语言·数据库
froginwe1116 分钟前
MySQL 删除数据库
开发语言
Rust研习社17 分钟前
深入浅出 Rust 泛型:从入门到实战
开发语言·后端·算法·rust
pele18 分钟前
如何用 contextmenu 事件自定义鼠标右键菜单的显示逻辑
jvm·数据库·python
2301_7735536219 分钟前
怎样禁用phpMyAdmin的控制台历史记录_防凭证与查询留存
jvm·数据库·python