首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >抓取PornHub视频重定向到Cornhub

抓取PornHub视频重定向到Cornhub
EN

Stack Overflow用户
提问于 2022-09-13 08:13:24
回答 1查看 771关注 0票数 1

我正在做我的第一步在网络抓取,并希望从Pornhub获得视频数据。

在第一步中,我浏览了主页上的所有页面,并收集了视频链接。这是有效的,我得到了一个约100 k链接的csv。如果我将这些链接复制/粘贴到浏览器,这些链接可以正常工作。但是,当我用我的脚本查看它们以获得我想要的值时,它总是将我重定向到一个Cornhub视频(我知道这是不久前愚人节的一个笑话)。因此,我的请求似乎被重定向了,但我不知道这是如何发生的,也不知道我是否能做些什么。

‘与open("links.csv","r")作为f: line= csv.reader(f)

代码语言:javascript
运行
复制
for adress in lines:
   
    data = []
    print(data)
    headers = ({'User-Agent':
                'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'})


    sleep(randint(2,5))
   

    html = requests.get(adress[0], headers=headers)
    soup = BeautifulSoup(html.text, features="html.parser")

    print(soup)

   
    views = soup.find("script", type="application/ld+json")

    json_data = json.loads(views.contents[0])

    interaction_stat = json_data["interactionStatistic"]
    views = int(interaction_stat[0]
                ["userInteractionCount"].replace(",", ""))

    duration = int(
        soup.find("meta", property="video:duration").get("content"))

    upload_date = datetime.datetime.strptime(
        json_data["uploadDate"][0:10], '%Y-%m-%d').date()

    video_id = soup.find("form", id="shareToStream")
    video_id = video_id.find("input", id="attachment").get("value")

    data.append(video_id)
    data.append(upload_date)
    data.append(views)
    data.append(duration)

    with open("data.csv", "a", newline="") as f:  # Das hier über die schleife um es nur einmal zu machen
        writer = csv.writer(f) 
        writer.writerow(data)

“”“

EN

回答 1

Stack Overflow用户

发布于 2022-09-13 08:44:14

您的标题确实很旧,但是工作得很好。可能要确保您的IP交替使用,或者在随后的请求之前花一些时间。

代码语言:javascript
运行
复制
import requests
from bs4 import BeautifulSoup
import json

lines = [
    "XX62f79e2ed1ed8",
    "XX63078405e84b6",
]

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
    "Host": "www.pornhub.com",
    "Refer": "https://www.pornhub.com/",
}

with requests.Session() as s:
    for line in lines:
        soup = (
            BeautifulSoup(s.get(line, headers=headers).text, features="html.parser")
            .find("script", type="application/ld+json")
        )
        json_data = (
            json
            .loads(soup.getText())
            ['interactionStatistic'][0]['userInteractionCount']
        )
        print(json_data)

对于我使用过的视频,输出如下:

代码语言:javascript
运行
复制
3,339,324
384,482
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73699619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档