[英]Web Scraping Python (BeautifulSoup,Requests)
我正在使用 python 学习网络抓取,但我无法获得所需的结果。 下面是我的代码和输出
代码
import bs4,requests
url = "https://twitter.com/24x7chess"
r = requests.get(url)
soup = bs4.BeautifulSoup(r.text,"html.parser")
soup.find_all("span",{"class":"account-group-inner"})
[]
这是我试图刮的
https://i.stack.imgur.com/tHo5S.png
我不断得到一个空数组。 请帮忙。
诸如Twitter之类的网站会动态加载内容,有时取决于您使用的浏览器等。由于动态加载,网页中可能会延迟加载某些元素,这意味着DOM会根据用户动态进行膨胀动作,即您正在浏览器Inspect元素中检查的标记,会被完全动态膨胀的HTML进行检查,但是您正在使用请求得到的响应,膨胀的HTML或一个简单的DOM,等待在用户操作中动态加载元素,从请求模块获取时的情况为“无”。
我建议您使用Selenium Webdriver抓取动态javascript网页。
尝试这个。 它会为您提供您可能需要的物品。 含BeautifulSoup
Selenium
易于处理。 我是这样写的。 这里是。
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://twitter.com/24x7chess")
soup = BeautifulSoup(driver.page_source,"lxml")
driver.quit()
for title in soup.select("#page-container"):
name = title.select(".ProfileHeaderCard-nameLink")[0].text.strip()
location = title.select(".ProfileHeaderCard-locationText")[0].text.strip()
tweets = title.select(".ProfileNav-value")[0].text.strip()
following = title.select(".ProfileNav-value")[1].text.strip()
followers = title.select(".ProfileNav-value")[2].text.strip()
likes = title.select(".ProfileNav-value")[3].text.strip()
print(name,location,tweets,following,followers,likes)
输出:
akul chhillar New Delhi, India 214 44 17 5
使用Python进行Web爬虫是数据科学爱好者的热门话题。 这是针对希望通过Python lxml库学习Web Scraping的初学者的内容。 什么是lxml? lxml是功能最丰富且易于使用的库,用于以Python编程语言处理XML和HTML。 lxml以pythonic方式对XML工具包的引用,在内部与两个特定的C语言库libxml2和libxslt绑定。 lxml的独特之处在于,它结合了这些库的速度和XML功能的完整性以及本机Python API的简单性。 随着Python和XML的持续增长,有大量的软件包可以帮助您从Python脚本读取,生成和修改XML文件。 与大多数工具相比,python lxml软件包具有两个主要优点:性能:读取和写入甚至相当大的XML文件都花费几乎无法察觉的时间。 易于编程:python lxml库比其他软件包具有简单的语法和更自适应的性质。 lxml在许多方面与其他两个先前的软件包(称为lxml的父软件包)相似。 ElementTree:用于创建和解析XML节点的树结构。
xml.etree.ElementTree:现在这是Python库的正式组成部分。 有一个名为cElementTree的C语言版本,对于某些应用程序,它甚至可能比lxml更快。 但是,大多数python开发人员首选lxml,因为它提供了许多使生活更轻松的附加功能。 特别是,它支持XPath,这使得管理更复杂的XML结构变得相当容易。 python lxml库可用于使用元素创建XML / HTML结构,或解析XML / HTML结构以从中检索信息。 该库可用于从不同的Web服务和Web资源获取信息,因为它们以XML / HTML格式实现。 本教程的目的是阐明lxml如何帮助我们从不同的Web资源获取和处理信息。 如何安装lxml? 阅读完整的初学者指南,了解如何使用Python lxml进行网络抓取 。
您本可以通过请求而不是硒来完成整个工作
import requests
from bs4 import BeautifulSoup as bs
import re
r = requests.get('https://twitter.com/24x7chess')
soup = bs(r.content, 'lxml')
bio = re.sub(r'\n+',' ', soup.select_one('[name=description]')['content'])
stats_headers = ['Tweets', 'Following', 'Followers', 'Likes']
stats = [item['data-count'] for item in soup.select('[data-count]')]
data = dict(zip(stats_headers, stats))
print(bio, data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.