Python 将刮取的数据移动到CSV文件中
由两部分组成的问题。。。。(请记住,我是网络垃圾和B群的新手!) 我能够创建一个抓住论坛帖子主题的代码。但到目前为止,它只从论坛的第1页上获取内容。我希望它能够一次抓取所有页面,但不确定如何进行。 我在网上读到,当URL稍微改变时,你可以改变它,使其在多个页面中迭代 我希望抓取的url是: 第2页是原始url+“&page=2” 你喜欢这个工作吗 base_url+“&page=“str(2) 其次,我似乎无法将解析后的数据导出到CSV文件中 这是我解析和导出数据的尝试:Python 将刮取的数据移动到CSV文件中,python,csv,web-scraping,beautifulsoup,Python,Csv,Web Scraping,Beautifulsoup,由两部分组成的问题。。。。(请记住,我是网络垃圾和B群的新手!) 我能够创建一个抓住论坛帖子主题的代码。但到目前为止,它只从论坛的第1页上获取内容。我希望它能够一次抓取所有页面,但不确定如何进行。 我在网上读到,当URL稍微改变时,你可以改变它,使其在多个页面中迭代 我希望抓取的url是: 第2页是原始url+“&page=2” 你喜欢这个工作吗 base_url+“&page=“str(2) 其次,我似乎无法将解析后的数据导出到CSV文件中 这是我解析和导出数据的尝试: from urllib
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')])
有几个问题。首先,这里没有编码。因此,它应该是:
containers = soup.findAll("td",{"class":"td_subject"})
for container in containers:
subject = container.a.contents[0]
print("subject: ", subject)
import csv
with open('ThaiLove.csv', 'w') as f:
csv_writer = csv.writer(f)
for subject in containers:
value = subject.a.contents[0]
if value:
csv_writer.writerow([value])
均未采用UTF-8编码。这给了我:
"\n 미성년자도 이용하는 게시판이므로 글 수위를 지켜주세요. "\n"\n 방꺽너이 방야이운하 수상보트를 타고 가서 볼만한 곳.. "\n"\n 방콕의 대표 야시장 - 딸랏롯파이2 "\n"\n 공항에서 제일 가까운 레드썬 마사지 "\n"\n
等等
其次,您似乎在csv中写入了错误的内容。您需要将代码从findAll
函数复制到write函数。因此,您使用的不是subject.a.string
,而是container.a.contents
至于抓取后续页面,如果你已经弄清楚了网站的分页格式,那就可以了。有几个问题。首先,这里没有编码。因此,它应该是:
containers = soup.findAll("td",{"class":"td_subject"})
for container in containers:
subject = container.a.contents[0]
print("subject: ", subject)
import csv
with open('ThaiLove.csv', 'w') as f:
csv_writer = csv.writer(f)
for subject in containers:
value = subject.a.contents[0]
if value:
csv_writer.writerow([value])
均未采用UTF-8编码。这给了我:
"\n 미성년자도 이용하는 게시판이므로 글 수위를 지켜주세요. "\n"\n 방꺽너이 방야이운하 수상보트를 타고 가서 볼만한 곳.. "\n"\n 방콕의 대표 야시장 - 딸랏롯파이2 "\n"\n 공항에서 제일 가까운 레드썬 마사지 "\n"\n
等等
其次,您似乎在csv中写入了错误的内容。您需要将代码从findAll
函数复制到write函数。因此,您使用的不是subject.a.string
,而是container.a.contents
至于抓取后续页面,如果您已经了解了网站的分页格式,这应该很好。当您尝试写入csv时会发生什么?@snapcrack它会创建一个csv文件,内容为:b'\n\xec\x9d\xb4\xea\xb2\x8c\xec\xeb\xac\xbc\xec\x9d\x80\xeb\xeb\xea\xb3\xa0\xeb\x8b\xb5\xed\x95\x98\xea\xb8\xb0\xea\xb2\xec\xec\xec\xec\xec\xbc\xec\xec\xec\xbc\xec\xec\xec\xec\xeb\xec\xec\xec\x79\xeb\xeb\xec\xec\xeb\xec\xec\xec\xxxxx\xec\x9d\xb4\xeb\x8f\x99\xeb\x90\x98\xec\x97\x88\xec\x8a\xb5\xeb\x8b\x88\xeb\x8b\xa4不确定发生了什么…当您尝试写入csv时会发生什么?@snapcrack它创建一个csv文件,内容为:b'\n\xec\x9d\xb4\xea\xb2\x8c\xec\xec\xeb\xac\xbc\xec\x9d\x80\xeb\xeb\xea\xb3\xa0\xeb\x8b\xb5\xed\x95\x98\xea\xb8\xb0\xea\xb2\xec\xec\xec\xec\xec\xec\xbc\xec\xec\xec\xec\xec\xec\xec\xec\xec\xec\xec\xeb\xec\xec\xec\xx79\xeb\xeb\xec\xec\xec\xx\xec\x9d\xb4\xeb\x8f\x99\xeb\x90\x98\xec\x97\x88\xec\x8a\xb5\xeb\x8b\x88\xeb\x8b\xa4不确定发生了什么…感谢您在转换为CSV方面提供的帮助,这似乎是个好办法。感谢您在转换为CSV方面提供的帮助,这似乎是个好办法。