为什么我没有输出?

时间:2019-08-15 06:20:12

标签: python beautifulsoup python-requests

我确实有一个非常简单的问题-为什么我没有输出?这是站点:https://riven.market/list/PC/Veiled。我以为问题是类名中的空格,但事实证明它是自然的,不应引起任何问题。如果您有任何疑问,请在评论中告诉我

import requests
from bs4 import BeautifulSoup

r = requests.get("https://riven.market/list/PC/Veiled")

c = r.content

soup = BeautifulSoup(c, "html.parser")
all = soup.find_all("div", {"class":"riven-list" })
for item in all:
    print("Name" + item.find("div", {"class": "attribute weapon"}).text.replace("\n", "").replace(" ", ""))

2 个答案:

答案 0 :(得分:2)

这是我的解决方法,即查找查询将请求发送到的实际URL。您可以通过rightclick-> inspect element-> network-> Find the get request

找到它

enter image description here

import requests
from bs4 import BeautifulSoup

# instead of sending to this
main = requests.get("https://riven.market/list/PC/Veiled")

ajax_url = "https://riven.market/_modules/riven/showrivens.php?baseurl=Lw==&platform=PC&limit=25&recency=-1&veiled=true&onlinefirst=true&polarity=all&rank=all&mastery=16&weapon=Any&stats=Any&neg=all&price=99999&rerolls=-1&sort=time&direction=ASC&page=1&time=1565851905857"
re = requests.get(ajax_url)
c = re.content

soup = BeautifulSoup(c, "html.parser")
all_divs = soup.find_all("div", class_ ="attribute weapon" )
for item in all_divs:
        print(item.text)

输出


        Pistol Riven Mod
        new

        Pistol Riven Mod
        > 1 day

        Pistol Riven Mod
        > 1 day

        Pistol Riven Mod
        new

        Pistol Riven Mod
        new

        Pistol Riven Mod
        > 1 day

        Pistol Riven Mod
        > 1 day

        Pistol Riven Mod
        > 1 day

        Melee Riven Mod
        > 1 day

        Shotgun Riven Mod
        > 1 day

        Pistol Riven Mod
        > 1 day

        Pistol Riven Mod
        > 1 day

        Pistol Riven Mod
        > 1 week

        Melee Riven Mod
        > 1 week

        Rifle Riven Mod
        > 1 week

        Shotgun Riven Mod
        > 1 week

        Pistol Riven Mod
        > 1 week

        Pistol Riven Mod
        > 1 week

        Pistol Riven Mod
        > 1 week

        Pistol Riven Mod
        > 1 week

        Rifle Riven Mod
        > 1 week

        Rifle Riven Mod
        > 1 week

        Melee Riven Mod
        > 1 week

        Shotgun Riven Mod
        > 1 week

        Rifle Riven Mod
        > 1 week

答案 1 :(得分:-1)

不确定所要输出的是什么,但是您需要对请求url进行一些修改并添加查询参数:

import requests
from bs4 import BeautifulSoup

url = 'https://riven.market/_modules/riven/showrivens.php'

payload = {
'baseurl': 'Lw==',
'platform': 'PC',
'limit': '25',
'recency': '-1',
'veiled': 'true',
'onlinefirst': 'true',
'polarity': 'all',
'rank': 'all',
'mastery': '16',
'weapon': 'Any',
'stats': 'Any',
'neg': 'all',
'price': '99999',
'rerolls': '-1',
'sort': 'time',
'direction': 'ASC',
'page': '1',
'time': '1565851478713'}

r = requests.get(url, params=payload)

c = r.content

soup = BeautifulSoup(c, "html.parser")
all_divs = soup.find_all("div", {"class":"riven " })
for item in all_divs:
    print("Name" + item.find("div", {"class": "attribute weapon"}).text.replace("\n", "").replace(" ", ""))

输出:

newtolRivenMod
>1daylRivenMod
>1daylRivenMod
newtolRivenMod
newtolRivenMod
>1daylRivenMod
>1daylRivenMod
>1daylRivenMod
>1dayRivenMod
>1dayunRivenMod
>1daylRivenMod
>1daylRivenMod
>1weekRivenMod
>1weekivenMod
>1weekivenMod
>1weeknRivenMod
>1weekRivenMod
>1weekRivenMod
>1weekRivenMod
>1weekRivenMod
>1weekivenMod
>1weekivenMod
>1weekivenMod
>1weeknRivenMod
>1weekivenMod