gpt4 book ai didi

python - 网页抓取每个论坛帖子(Python、Beautifulsoup)

转载 作者:行者123 更新时间:2023-12-01 03:14:52 26 4
gpt4 key购买 nike

各位堆叠者再次大家好。简短描述..我正在使用 Python 从汽车论坛上抓取一些数据并将所有数据保存到 CSV 文件中。在其他 stackoverflow 成员的帮助下,我们设法挖掘特定主题的所有页面,收集每个帖子的日期、标题和链接。

我还有一个单独的脚本,我现在正在努力实现(对于找到的每个链接,python 都会为其创建一个新汤,遍历所有帖子,然后返回到上一个链接)。

非常感谢任何其他关于如何使其更好的提示或建议,因为这是我第一次使用 python,我认为这可能是我的嵌套循环逻辑搞砸了,但多次检查对我来说似乎是正确的。

这是代码片段:

        link += (div.get('href'))
savedData += "\n" + title + ", " + link
tempSoup = make_soup('http://www.automotiveforums.com/vbulletin/' + link)
while tempNumber < 3:
for tempRow in tempSoup.find_all(id=re.compile("^td_post_")):
for tempNext in tempSoup.find_all(title=re.compile("^Next Page -")):
tempNextPage = ""
tempNextPage += (tempNext.get('href'))
post = ""
post += tempRow.get_text(strip=True)
postData += post + "\n"
tempNumber += 1
tempNewUrl = "http://www.automotiveforums.com/vbulletin/" + tempNextPage
tempSoup = make_soup(tempNewUrl)
print(tempNewUrl)
tempNumber = 1
number += 1
print(number)
newUrl = "http://www.automotiveforums.com/vbulletin/" + nextPage
soup = make_soup(newUrl)

到目前为止我的主要问题是 tempSoup = make_soup('http://www.automotiveforums.com/vbulletin/' + link)在抓取论坛帖子的所有帖子后,似乎没有创建新的汤。

这是我得到的输出:

 http://www.automotiveforums.com/vbulletin/showthread.php?s=6a2caa2b46531be10e8b1c4acb848776&t=1139532&page=2
http://www.automotiveforums.com/vbulletin/showthread.php?s=6a2caa2b46531be10e8b1c4acb848776&t=1139532&page=3
1

因此,它似乎确实找到了新页面的正确链接并抓取了它们,但是对于下一次迭代,它会打印新日期和相同的确切页面。在打印最后一个链接之后,还有一个非常奇怪的 10-12 秒的延迟,然后它才会跳下来打印数字 1,然后删除所有新日期..

但是在进入下一个论坛主题链接后,它每次都会抓取相同的精确数据。

抱歉,如果它看起来真的很乱,这是一个副项目,也是我第一次尝试做一些有用的事情,所以我对此很陌生,任何建议或提示将不胜感激。我并不是要求您为我解决代码,即使是一些针对我可能错误的逻辑的指示也将不胜感激!

最佳答案

因此,在花费了更多时间之后,我几乎成功破解了它。现在,python 找到论坛上的每个线程及其链接,然后进入每个链接,读取所有页面并继续下一个链接。

如果有人要使用它,这是它的固定代码。

    link += (div.get('href'))
savedData += "\n" + title + ", " + link
soup3 = make_soup('http://www.automotiveforums.com/vbulletin/' + link)
while tempNumber < 4:
for postScrape in soup3.find_all(id=re.compile("^td_post_")):
post = ""
post += postScrape.get_text(strip=True)
postData += post + "\n"
print(post)
for tempNext in soup3.find_all(title=re.compile("^Next Page -")):
tempNextPage = ""
tempNextPage += (tempNext.get('href'))
print(tempNextPage)
soup3 = ""
soup3 = make_soup('http://www.automotiveforums.com/vbulletin/' + tempNextPage)
tempNumber += 1
tempNumber = 1
number += 1
print(number)
newUrl = "http://www.automotiveforums.com/vbulletin/" + nextPage
soup = make_soup(newUrl)

我所要做的就是将两个相互嵌套的 for 循环分成自己的循环。仍然不是一个完美的解决方案,但是嘿,它几乎可以工作。

非工作位:提供的链接的前 2 个线程有多个页面的帖子。以下10+个以上线程不要。我无法找到检查 for tempNext in soup3.find_all(title=re.compile("^Next Page -")): 的方法循环外的值以查看它是否为空。因为如果它没有找到下一页元素/href,它只会使用最后一个。但是,如果我在每次运行后重置该值,它就不再挖掘每个页面=l 一个刚刚创建另一个问题的解决方案:D。

关于python - 网页抓取每个论坛帖子(Python、Beautifulsoup),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42557071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com