这个句子是入门级爬行动物,老司机们不需要看。
这次主要是新闻标题、作者、来源、发布时间、新闻正文
首先打开163个网站,我们随便选择分类。 这里我选择的分类是国内新闻。 然后,右键单击查看源代码,发现源代码中没有页面中间的新闻列表。 这表明本页面采用了异步方式。 也就是说,是通过api接口获取的数据。
确认后,使用F12打开谷歌浏览器的控制台,点击Network。 我们一直往下拉,出现在了右侧。 '…special/00804 kva/cm _ Guo nei _ 03.js? ……等地址,点击Response,就知道这正是我们要找的api界面。
你会发现这些接口的地址有一定的规律。 “cm_guonei_03.js”、“cm_guonei_04.js”是显而易见的。
3358 temp.163.com/special/00804 kva/cm _ Guo nei _0(* ).js
上面的连接是我们这次想要求的地址。
接下来,我只需要python的两个库:
requestsjsonbeautifulsouprequests库用于进行网络请求,简言之,就是模拟浏览器以获取资源。
我们收集api接口,其格式为json,所以使用json库进行分析。 BeautifulSoup用于解析html文档,可以方便地检索指定div的内容。
下面开始编写我们爬虫:
第一步是导入上述三个包。
importjsonimportrequestsfrombs4importbeautifulsoup接下来定义如何检索指定页码中的数据。
defget_page(page ) : URL _ temp=' http://temp.163.com/special/00804 kva/cm _ Guo nei _0{ }.js ' return http://.com=2003 360 continue content=response.text #获取响应正文_content=formatcontent(content ) json字符串格式result=JSON.Loads
然后对数据进行分析,您会发现下图中包含的是需要捕获的标题、发布时间和新闻内容页面。
已经获取了内容页面的url,接下来捕获新闻正文。
在抓住正文之前,需要分析正文的html页面,找到正文、作者和源在html文档中的位置。
3文章来源在文档中的位置为http://www.Sina.com/。
3358www.Sina.com/位置是id = “ne_article_source” 的 a 标签。
3358www.Sina.com/位置是作者。
在下一次面试中收集这三个内容的代码:
defget_content(URL ) : source=' ' author=' ' body=' ' resp=requests.get (URL ) ) ) ) ) ) ody ) source=bs4.find(a ),id='ne_article_source ' ).get_text(author=bs4.find ),class _=' EP-EP
那么,今后当然要保存它们。 为了方便,我直接以文本形式保存。 最终结果如下。
格式为json字符串,“标题”:“日期”、“URL”、“源”、“作者”、“正文”。
class = “ep-editor” 的 span 标签