游戏网站的缩略图l链接爬虫,执行了什么结果都没有,也没有报错,问问大佬们咋回事
本帖最后由 Hehe1221 于 2023-7-20 15:00 编辑本人小白,懂得很少,求大佬指点一下(≧ - ≦)
代码如下(加了注释):
import requests
from bs4 import BeautifulSoup
session = requests.Session()
def get_page_content(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
response = session.get(url, headers=headers)
content = response.text
return content
def parse_content(content):
# 创建BeautifulSoup对象,用于解析HTML内容
soup = BeautifulSoup(content, 'html.parser')
# 使用CSS选择器选择所有class为'lazyloaded'的元素
lazyloadeds = soup.select('.lazyloaded')
# 提取游戏名称,并去除首尾的空白字符
games =
return games
def get_next_page_url(content):
# 创建BeautifulSoup对象,用于解析HTML内容
soup = BeautifulSoup(content, 'html.parser')
# 查找下一页按钮的<a>标签
next_button = soup.find('a', class_='next page-numbers')
if next_button:
# 如果存在下一页按钮,则提取其href属性来获取下一页的URL
next_page_url = next_button['href']
return next_page_url
else:
# 如果不存在下一页按钮,则返回None表示已到达最后一页
return None
def crawl_website():
base_url = "https://www.gamer520.com/switchyouxi"
url = base_url
while True:
# 获取当前页的内容
content = get_page_content(url)
# 解析当前页的内容,提取游戏名称
games = parse_content(content)
# 打印游戏名称
for game in games:
print(game)
# 获取下一页的URL
next_page_url = get_next_page_url(content)
if next_page_url is None:
# 如果下一页URL为None,表示已到达最后一页,跳出循环
break
# 更新URL为下一页的URL,继续循环爬取下一页
url = next_page_url
crawl_website()
本帖最后由 Mike_python小 于 2023-7-20 13:17 编辑
你的代码看起来已经很不错了!不过,我注意到其中有一处可能会导致错误的地方。在使用 soup.select('.lazyloaded') 选择器时,你可能想要提取具有 "lazyloaded" 类的元素,但在列表解析中,你却使用了 lazyload.text.strip() 来提取游戏名称。这样会导致 AttributeError: 'str' object has no attribute 'text' 错误。
为了修复这个问题,并进行其他一些改进,你可以尝试以下修改:
import requests
from bs4 import BeautifulSoup
session = requests.Session()
def get_page_content(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
response = session.get(url, headers=headers)
content = response.text
return content
def parse_content(content):
soup = BeautifulSoup(content, 'html.parser')
lazyloadeds = soup.select('.lazyloaded')
games =
return games
def get_next_page_url(content):
soup = BeautifulSoup(content, 'html.parser')
next_button = soup.find('a', class_='next page-numbers')
if next_button:
next_page_url = next_button['href']
return next_page_url
else:
return None
def crawl_website():
base_url = "https://www.gamer520.com/switchyouxi"
url = base_url
while True:
content = get_page_content(url)
games = parse_content(content)
for game in games:
print(game)
next_page_url = get_next_page_url(content)
if next_page_url is None:
break
url = next_page_url
crawl_website()
在修改后的代码中,我对 parse_conten 函数进行了更新,使用 lazyloaded 元素的父节点找到游戏名称所在的 <h2> 元素,并提取其文本内容。这样可以确保正确提取游戏名称。
希望这次的修改对你有帮助!如果你还有其他问题,请随时提问。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
你好!看起来你想编写一个用于爬取游戏网站缩略图的爬虫。根据你提供的代码,我发现了几个可能导致问题的地方:
1. 你导入了BeautifulSoup,但是没有导入bs4模块。你需要在开头添加from bs4 import BeautifulSoup来正确导入该模块。
2. 在get_page_content函数中,你将请求头(headers)放在了多行字符串内部,这可能会导致请求头格式错误。请修改为以下方式,将请求头放在单独的行上:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
3. 在parse_content函数中,你使用了lazyload.text.strip()来提取游戏名称。然而,在前面的代码中,你使用了lazyloadeds作为遍历的变量名,这可能是一个笔误。请将其修改为lazyloaded,代码如下:
games =
4. 在crawl_website函数中,你定义了base_url为"https://www.gamer520.com/switchyouxi",但是在每次循环时,你更新的是next_page_url而不是url。请将以下代码:
url = next_page_url
修改为:
url = next_page_url
这些是我在你的代码中发现的一些问题。请尝试修改后重新运行你的爬虫,看看是否能够正常获取游戏名称。如果还有其他问题,请随时向我提问! 首先,非常感谢你分享了这段代码。我发现问题可能出现在parse_content函数中,你是在试图提取 class 为 'lazyloaded' 的元素的文本。然而,这个元素可能是图片或者其他无文本的元素,所以你得到的结果是空的。你可能需要重新检查这个选择器和你想提取的数据的实际HTML结构。
代码中的这一部分:
# 使用CSS选择器选择所有class为'lazyloaded'的元素
lazyloadeds = soup.select('.lazyloaded')
在这里,你尝试提取 class 名为 'lazyloaded' 的所有元素。但是, lazyloaded这个类名,通常是用于懒加载的图片,而不是包含文本的元素。因此,你可能需要重新检查你正在尝试提取的元素的 HTML 结构,以确认你使用的 CSS 选择器是否正确。
然后,你可能还需要检查这个网站是否有反爬虫的机制。如果有,你的请求可能被拒绝了,但由于你没有检查 HTTP 响应的状态码,你可能没有注意到这一点。
最后,为了帮助你解决问题,我需要你提供更多的信息。例如,你可以打印出你得到的content或games看看是否有你期待的内容。你还可以提供一下你希望从网页中提取的具体信息的样子,这样我们才能给出更准确的帮助。
希望这个解答能对你有所帮助!如果你有更多的问题,随时向我们提问。 占楼根据你提供的代码,目前看不出明显的错误。可能是以下几个原因导致爬虫没有正常执行:
网站URL不正确:请确保base_url所指向的网站是有效的,并且确保网站存在游戏缩略图。
网站反爬虫机制:有些网站会使用反爬虫机制来阻止爬虫程序的访问。你可以尝试在请求头中加入更多的参数,例如cookies等信息,以模拟浏览器的行为。
解析器问题:在使用BeautifulSoup解析HTML内容时,如果网页的结构发生变化,也可能导致解析失败。你可以检查一下网页是否有更新或者尝试换用其他解析器,例如lxml。
网络请求问题:可能是网络请求出现问题,导致无法正常获取页面内容。你可以尝试在get_page_content函数中打印出response对象的状态码,查看是否返回了正确的响应。
如果以上方法都没有解决问题,建议逐步调试代码,添加一些打印语句来查看程序执行过程中的变量和结果,以便找出问题所在。
为什么不给我设置一个最佳答案呢?点它 -> https://i.imgtg.com/2023/06/18/OTpTnF.png
页:
[1]