Python 将刮取的数据移动到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

由两部分组成的问题。。。。(请记住,我是网络垃圾和B群的新手!) 我能够创建一个抓住论坛帖子主题的代码。但到目前为止,它只从论坛的第1页上获取内容。我希望它能够一次抓取所有页面,但不确定如何进行。 我在网上读到,当URL稍微改变时,你可以改变它,使其在多个页面中迭代

我希望抓取的url是: 第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')])

有几个问题。首先,这里没有编码。因此,它应该是:

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方面提供的帮助,这似乎是个好办法。