这是我的第一个Python项目,我通过关注youtube视频编写了这个项目。虽然不太精通,但我认为我有编码的基础知识。
#importing the module that allows to connect to the internet
import requests
#this allows to get data from by crawling webpages
from bs4 import BeautifulSoup
#creating a loop to change url everytime it is executed
def creator_spider(max_pages):
page = 0
while page < max_pages:
url = 'https://www.patreon.com/sitemap/campaigns/' + str(page)
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
for link in soup.findAll('a', {'class': ''}):
href = "https://www.patreon.com" + link.get('href')
#title = link.string
print(href)
#print(title)
get_single_item_data(href)
page = page + 1
def get_single_item_data(item_url):
source_code = requests.get(item_url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
print soup
for item_name in soup.findAll('h6'):
print(item_name.string)
在我抓取的每个页面中,我希望代码能够获得突出显示的信息:http://imgur.com/a/e59S9 源代码为:http://imgur.com/a/8qv7k
我认为我应该在get_single_item_data()函数中更改soup.findAll()的属性,但我所有的尝试都是徒劳的。对此有任何帮助非常感谢。
答案 0 :(得分:0)
来自bs4 docs
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css-class
搜索具有特定CSS类的标记非常有用,但CSS属性的名称“class”是Python中的保留字。使用class作为关键字参数会给出语法错误。从Beautiful Soup 4.1.2开始,您可以使用关键字参数class _:
按CSS类进行搜索soup.find_all("a", class_="sister")
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
然而,仔细看看你在pic中提到的代码后,这种方法将无法得到你想要的东西。在源代码中,我看到了data-react-id。 DOM由ReactJS构建,并且requests.get(url)不会在您的头端执行JS。在浏览器中禁用JS以查看requests.get(url)返回的内容。
祝你好运