您好,Khabrovchans! 很长一段时间以来,人们都希望写一篇文章,但并不敢。
我的一系列帖子将描述我从初级到中级,甚至到高级的道路。 我们将使用Python进行编程。
最后将附上一些鲜为人知的库的PS文档。
关于我自己的简介:Python从两年前开始研究,没有任何特殊进展。
自从我教了一年半以来,基础知识本身就变得令人失望。 现在,我正在深入研究该语言,了解其结构以及所有事情的发生方式。 在以下文章中,我将上载代码,使用所有新库和新库,并且您知道python有很多:)
从哪里开始? 几个月前,我写了我的第一个解析器。 事实证明,编写解析器非常简单,您甚至可以从中赚钱。 到目前为止,我将向您展示一些使用
bs4 + request中的堆栈的示例。 我们将解析我们心爱的
Habr 。
不知道每个人是否都熟悉
fake_useragent库。 解析非常方便;它会创建用户代理伪造品。
ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox}
这是我们代码的下一个小块。 在第一行中,我们创建了ua变量,该变量使用UserAgent类的方法。 在第二行中,我们创建了一个字典,该字典将在以后帮助我们进行解析。
现在创建用于解析的函数本身。
def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error")
此函数将解析链接,我们将使用“ post__title_link”类指示该标签的存在。
保存数据的最简单方法是将其保存到文件中。 因此,让我们开始吧。
url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
最后,我们得到一个文件,其中包含我们从首页收集的帖子的名称和链接。
源代码(完整),仅不带注释:
from bs4 import BeautifulSoup as bs from fake_useragent import UserAgent import requests ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox} def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error") url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
好结果! 除了跳行和注释,我们碰巧碰到了20行。 对于初学者来说,非常好:)
如所承诺的,链接到所用库的文档:
要求:
*挤压*bs4:
*压缩*fake_useragent:
*压缩*谢谢大家的关注! 待会见!
PS:如果有任何反馈,那么下面的文章就不会多久了