Python 3.x BeautifulSoup绝对URL打印到CSV
我已经在这里通过了大量的线程,看看我是否能找到一种方法来修复这段代码,但似乎不能完全让它工作。我正试图从一个网站抓取链接,然后写入csv。代码如下: 我找到了一种方法,获得了95%的成功率,但我缺少了一些东西,仅获得href:Python 3.x BeautifulSoup绝对URL打印到CSV,python-3.x,beautifulsoup,urllib,Python 3.x,Beautifulsoup,Urllib,我已经在这里通过了大量的线程,看看我是否能找到一种方法来修复这段代码,但似乎不能完全让它工作。我正试图从一个网站抓取链接,然后写入csv。代码如下: 我找到了一种方法,获得了95%的成功率,但我缺少了一些东西,仅获得href: from bs4 import BeautifulSoup import urllib.request import urllib.parse import csv j = urllib.request.urlopen("htt
from bs4 import BeautifulSoup
import urllib.request
import urllib.parse
import csv
j = urllib.request.urlopen("http://cnn.com")
soup = BeautifulSoup(j, "lxml")
data = soup.find_all('a', href=True)
for url in soup.find_all('a', href=True):
#print(url.get('href'))
with open('marcel.csv', 'w', newline='') as csvfile:
write = csv.writer(csvfile)
write.writerows(data)
我使用
openpyxl
获取它
from openpyxl import Workbook,load_workbook
我认为这很容易。
这是我项目的一部分,你可以试试
def createExcel(self):
wb = Workbook(optimized_write=True)
ws = wb.create_sheet(title='书籍列表')
row0 = ['编号','条码号','题名','责任者','借阅日期','归还日期','馆藏地']
ws.append(row0)
save_path = 'book_hist.xlsx'
wb.save(save_path)
def saveToExcel(self,data_list):
wb = load_workbook(filename='book_hist.xlsx')
ws = wb.get_sheet_by_name('书籍列表')
for i in range(len(data_list)):
ws.append(data_list[i])
save_path = 'book_hist.xlsx'
wb.save(save_path)
这可能是你想要做的
from bs4 import BeautifulSoup
import requests #better than urllib
import csv
j = requests.get("http://cnn.com").content
soup = BeautifulSoup(j, "lxml")
data = []
for url in soup.find_all('a', href=True):
print(url['href'])
data.append(url['href'])
print(data)
with open("marcel.csv",'w') as csvfile:
write = csv.writer(csvfile, delimiter = ' ')
write.writerows(data)
对不起,也许我误解了你的话,所以我想出了95%的方法。我改变的是:这解决了它!谢谢:)为了便于理解,添加data=[]意味着?这只是意味着“创建一个在本例中命名为data的空列表”。通过这种方式,我们可以使用.append方法将其填充到循环中(如果列表还不存在,则此方法不起作用),是否有方法仅获取输出中的唯一值?我希望得到的是一个绝对链接的列表(例如,这里的抓取url)。但是一个没有重复值的列表。只需将
data=set(data)
添加到带有的之前。要获得绝对链接,请使用if
语句连接http://edition.cnn.com/
+以/
开头的每个链接。