
文章插图
- 这个小爬虫我们用到的requests、re、lxml、json和pyMySQL在编写代码之前我们需要将他们导入进来.
import requestsfrom lxml import etreeimport pymysqlimport json
- 首先先选择一个浏览器头信息,这个可有可无,当然有了更好,存在它才能让我们的爬虫更像是从浏览器进入获取信息的 。
【搜狐新闻小爬虫,解析数据接口并插入mysql数据库】headers = { 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (windows NT 6.1; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/69.0.3497.100 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9',}
- 接下来就是分析数据接口了,这个可以使用浏览器按F12,切换到编辑者模式,从中分析出数据接口链接,这里我们直接给出数据接口 。
url = "http://v2.sohu.com/public-api/feed?scene=CHANNEL&sceneId=10&page=1&size=10"通过数据接口形式我们看到它有两个参数page和size,page=1表示第一页,size=10表示每页十条数据 。我们只需要改变page的数据就可以源源不断的获取数据了,当然获取数据要节制,不要给人家服务器造成太大压力 。
- 接下来直接请求网页链接获取链接返回的数据 。这里返回的是json字符串,我们需要对json字符串进行解析,这个时候json这个库就用到了 。
json_str = requests.get(url,headers= headers).text[{ "id": 357806424, "authorId": 557006, "authorName": "FX168", "authorPic": "//sucimg.itc.cn/avatarimg/34ca41ae9ad04be68072f8894d7124b7_1491542550231", "focus": "//5b0988e595225.cdn.sohucs.com/c_fill,w_600,h_300,g_faces/images/20191202/cc5eda06fba94b3fb7ed0c1c2faea9a6.jpeg", "picUrl": "//5b0988e595225.cdn.sohucs.com/c_fill,w_150,h_100,g_faces,q_70/images/20191202/cc5eda06fba94b3fb7ed0c1c2faea9a6.jpeg", "images": ["//5b0988e595225.cdn.sohucs.com/c_fill,w_150,h_100,g_faces,q_70/images/20191202/cc5eda06fba94b3fb7ed0c1c2faea9a6.jpeg", "//5b0988e595225.cdn.sohucs.com/c_fill,w_150,h_100,g_faces,q_70/images/20191202/df1ed938d9614cf690f87a58577ce07a.png"], "title": "?70年来首次,美国成石油净出口国!国际油价暴跌近5%,一切才刚刚开始?", "mobileTitle": "?70年来首次,美国成石油净出口国!国际油价暴跌近5%,一切才刚刚开始?", "tags": [{"id": 70694,"name": "沙特","channelId": 0,"channelName": null,"categoryId": 0,"categoryName": null,"config": null,"introduction": null,"secureScore": 100,"hotSpot": false }, {"id": 68937,"name": "美国","channelId": 0,"channelName": null,"categoryId": 0,"categoryName": null,"config": null,"introduction": null,"secureScore": 100,"hotSpot": false }, {"id": 68938,"name": "俄罗斯","channelId": 0,"channelName": null,"categoryId": 0,"categoryName": null,"config": null,"introduction": null,"secureScore": 100,"hotSpot": false }], "publicTime": 1575262702000, "channelId": 0, "channelName": null, "channelUrl": "", "categoryId": 0, "categoryName": null, "headImage": null, "cmsId": 0, "originalSource": "http://mp.weixin.qq.com/s?__biz=MjM5OTAwOTMyMA==&mid=2650280772&idx=1&sn=85dd7f58ab6b292fcff2d57a677a35dc", "outerLink": false, "otherId": 0, "passport": "fx168caijing@sohu.com", "personalPage": "http://mp.sohu.com/profile?xpt=ZngxNjhjYWlqaW5nQHNvaHUuY29t", "videoInfo": null, "type": 0, "cover": null, "tkd": null, "secureScore": 100}]
- 通过这个数据我们来提取我们自己需要的数据,比如标题,发布时间,当然如果想获取新闻正文,还需要进入到网址链接中取,在数据中我们看到网址链接在picUrl这个字段中 。搜狐的新闻链接是通过id与authorId拼接而成,针对上面的一条数据,这个新闻的正文链接便是
http://www.sohu.com/a/357806424_557006
- 通过之前的方式,我们再去请求这个网址获取新闻正文的html原页面,再将原页面通过lxml加工成元素结构,便可以直接获取数据啦!
推荐阅读
-
车家号|630马力新超跑,玛莎拉蒂MC20全球首发,新“海王”来了
-
如何正确引导孩子交朋友,如何正确引导孩子交朋友初中
-
鹿晗零点为关晓彤庆生|【围观吃瓜】鹿晗零点为关晓彤庆生,有点甜是怎么回事哦!
-
孔夫子搬家一一歇后语下一句 孔夫子搬家 一一歇后语
-
省心省力又省钱,解放J6P自动挡牵引车为啥这么受欢迎?
-
庞统那么厉害为什么会死?历史上的诸葛亮和庞统谁更厉害
-
历史神秘事|尽管武功谋略皆为一流,为何最终落得郁郁而终的下场呢,马超
-
地方|尤氏比王熙凤地位尊贵的多,这个地方她能进,凤姐没资格!
-
-
淘宝直播、问大家、猜你喜欢,95后最爱的淘宝三大功能
-
时间■再过4个月时间,新农合账户将会清零了,很多农民不懂怎么
-
重庆2号线最早几点开 重庆轨道交通2号线早晚高峰高开列车
-
国防时报军情|美国再出新招:将研制新型战机,实施未来直升机计划,为对抗中俄
-
全创优咖|3星座欣喜,终于获得心上人认可,牵手相伴到永生,在7月
-
小柒厨房菜■村厨猪手、肉丝南瓜花、菜心炒鱼片这几道家常菜的做法
-
|为什么懂人情世故的人更容易赚大钱,看懂的能少奋斗5年
-
-
土木女生国内设计院or造价还是出国读研,大二下迷茫求指点。?
-
肖战@被封杀?因不可抗拒的压力删掉肖战所有镜头,他是劣迹艺人?
-
腿比较细,但是上半身很胖,脖子粗,脸比较胖,怎么样做或者说合理的锻炼才能够让身体比例更加协调