【发布时间】:2018-08-29 14:05:51
【问题描述】:
此代码获取页面。我的问题是我需要抓取用户 cmets 的内容而不是 cmets 的数量。它嵌套在 cmets 部分的数量内,但我不确定如何访问链接并解析和抓取用户 cmets。
request_list = []
id_list = [0]
for i in range(0,200,25):
response = requests.get("https://www.reddit.com/r/CryptoCurrency/?count="+str(i)+"&after="+str(id_list[-1]), headers = {'User-agent':'No Bot'})
soup = BeautifulSoup(response.content, 'lxml')
request_list.append(soup)
id_list.append(soup.find_all('div', attrs={'data-type': 'link'})[-1]['data-fullname'])
print(i, id_list)
if i%100 == 0:
time.sleep(1)
下面的代码我尝试编写一个应该访问嵌套 cmets 的函数,但我不知道。
def extract_comment_contents(request_list):
comment_contents_list = []
for i in request_list:
if response.status_code == 200:
for each in i.find_all('a', attrs={'data-inbound-url': '/r/CryptoCurrency/comments/'}):
comment_contents_list.append(each.text)
else:
print("Call failed at request ", i)
return comment_contents_list
fetch_comment_contents_list = extract_comment_contents(request_list)
print(fetch_comment_contents_list)
【问题讨论】:
-
Reddit 有一个定义良好的 API,并确保你想做的任何事情都在那里可用。您应该改用 API - 它在他们的服务器上会更好,并且对您来说比网络抓取更容易。使用 Python 变得更加容易,因为您可以使用 PRAW。
标签: python python-3.x web-scraping beautifulsoup reddit