【发布时间】:2017-12-19 00:26:21
【问题描述】:
两部分问题....(请记住,我是 webscraping 和 BSoup 的新手!) 我能够创建一个代码来获取论坛上帖子的主题。但截至目前,它只从论坛的第 1 页获取内容。我希望它能够一次抓取所有页面,但不完全确定如何去做。 我在网上读到,当 URL 发生轻微变化时,您可以对其进行更改,以便它遍历多个页面。
我要抓取的网址是: http://thailove.net/bbs/board.php?bo_table=ent 第 2 页是原始 url + "&page=2" 像这样的东西会起作用吗?: base_url + "&page=" str(2)
其次,我似乎无法将解析后的数据导出为 CSV 文件 这是我解析和导出数据的尝试:
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import csv
my_url = 'http://thailove.net/bbs/board.php?bo_table=ent'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("td",{"class":"td_subject"})
for container in containers:
subject = container.a.contents[0]
print("subject: ", subject)
with open('ThaiLove.csv', 'w') as f:
csv_writer = csv.writer(f)
for subject in containers:
value = subject.a.string
if value:
csv_writer.writerow([value.encode('utf-8')])
【问题讨论】:
-
当您尝试编写 csv 时会发生什么?
-
@snapcrack 它创建一个csv文件,内容为: b'\n \xec\x9d\xb4 \xea\xb2\x8c\xec\x8b\x9c\xeb\xac\xbc\xec \x9d\x80 \xeb\xac\xbb\xea\xb3\xa0\xeb\x8b\xb5\xed\x95\x98\xea\xb8\xb0 \xea\xb2\x8c\xec\x8b\x9c\xed\x8c \x90\xec\x9c\xbc\xeb\xa1\x9c \xec\x9d\xb4\xeb\x8f\x99 \xeb\x90\x98\xec\x97\x88\xec\x8a\xb5\xeb\x8b\x88 \xeb\x8b\xa4. ' 不知道发生了什么......
标签: python csv web-scraping beautifulsoup