目前我正在开发我的第一个Python项目。 我正在尝试构建一个简单的程序来自动从网站http://socialblade.com进行网页抓取 我们的想法是与youtube用户(excel,csv,...)建立一个列表,并将其提供给python脚本。然后,Python会抓取用户页面并生成一个csv文件,其中包含最新数量的每日视图或订阅者。
我已经按照BS4的一些教程,请求,但是我被困了。 似乎在socialblade上没有我想要刮掉的div的class / id标签。
离。这是我想收集的其中一个项目的代码。
<div style="width: 140px; float: left;">16,518
</div>
除此之外,我还不确定如何将链接提供给Python程序中的不同用户。 目前,我们有一个包含用户(行)列表的文件。其中一列是指向其Youtube帐户的链接。
非常基本这就是我想要做的事情:
对于用户1到n 1)从excel文件中读取用户链接 2)从socialblade页面中删除“观看次数”和“订阅次数” 3)将此数据写入csv / excel文件
希望这有点可以理解:)
非常感谢并期待着提升我的Python技能!
亲切的问候,祝周末愉快!
答案 0 :(得分:1)
好吧,如果我理解这一点,首先你必须在Excel文件中有用户列表,我没有一个,所以在我的情况下,我使用此代码获得前25名并将其保存到xlsx文件中:
_GET
接下来是获取链接和抓取信息,我会使用此代码执行此操作:
from openpyxl import load_workbook, Workbook
from lxml.html import fromstring
import requests
def get_number_of_views_and_subscriptions(socialblade_url="https://socialblade.com/youtube/"):
"""Function returns account names, account urls, number of subscribers and number of views
from socialblade web-site using requests and xpath"""
request = requests.get(socialblade_url)
tree = fromstring(request.content)
account_names = tree.xpath("/html/body/div[9]/div[1]/div/div[3]/a/text()")
account_urls = ["https://socialblade.com" + _ for _ in tree.xpath("/html/body/div[9]/div[1]/div/div[3]/a/@href")]
subscribers = tree.xpath("/html/body/div[9]/div[1]/div/div[5]/text()")
views = tree.xpath("/html/body/div[9]/div[1]/div/div[6]/text()")
data = zip(account_names, account_urls, subscribers, views)
return data
def writing_to_excel(file_path="users_data.xlsx", data=get_number_of_views_and_subscriptions()):
"""Function writes data of type ["account names", "account urls", "number of subscribers", "number of views"]
to an xlsx file"""
workbook = Workbook()
worksheet = workbook.create_sheet("Socialblade", 0)
worksheet.append(["account names", "account urls", "number of subscribers", "number of views"])
for item in data:
worksheet.append(item)
workbook.save(file_path)