Разбор ссылок, хранящихся в CSV-файле - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь проанализировать ссылки, хранящиеся в моем CSV-файле, а затем распечатать заголовок для каждой ссылки.У меня возникли проблемы со стрельбой в нижней части кода, когда я пытаюсь прочитать ссылки и выполнить синтаксический анализ, чтобы получить заголовок каждой ссылки.

import csv
from bs4 import BeautifulSoup
from urllib.request import urlopen

contents = []

filename = 'scrap.csv'

with open(filename,'rt') as f:
    data = csv.reader(f)

    for row  in data:
        links = row[0]
        contents.append(links) #add each url to list of contents

for links in contents: #parse through each url in the list contents
    url = urlopen(links[0].read())
    soup = BeautifulSoup(url,"html.parser")

for title in soup.find_all('title'):
    print(title)

Я ожидаю, что вывод будет заголовком в каждой напечатанной строке, но я получаю следующую строку ошибки 17 в url = urlopen (links [0] .read ()) AttributeError: объект 'str'не имеет атрибута "чтение"

Ответы [ 3 ]

0 голосов
/ 07 июня 2019

Попробуйте этот код. Это должно работать и уменьшить ваши накладные расходы.

import pandas as pd
for link in pd.read_csv('scrap.csv')[0].values:
    url = urlopen(link)
    soup = BeautifulSoup(url,"html.parser")
0 голосов
/ 07 июня 2019
import csv
from bs4 import BeautifulSoup
from urllib.request import urlopen
import requests

contents = []

def soup_title():
    for title in soup.find_all('title'):
        title_name = title
        return title_name

filename = 'scrap.csv'

with open(filename,'rt') as f:
    data = csv.reader(f)

    for row  in data:
        links = row[0]
        contents.append(links) #add each url to list of contents

for links in contents: #parse through each url in the list contents
     url = requests.get(links)
     soup = BeautifulSoup(url.text,"html.parser")
     brand_info = soup_title()
     print(brand_info)
0 голосов
/ 07 июня 2019

Измените url = urlopen (ссылки [0] .read ()) на url = urlopen (ссылки) .read ()

...