#python
Вопрос:
У меня есть csv-файл, в котором есть один столбец, содержащий URL-адреса, я хочу открыть его, преобразовать в список и повторить что-то для каждого URL-адреса, но он выдает мне ошибки, в нем говорится, что URL-адрес не является строкой.
import requests
from lxml import html, etree
from selenium.webdriver import Chrome, ChromeOptions
import random
import time
from datetime import datetime, timedelta
import csv
import pandas as pd
restaurant_urls_li = pd.read_csv(r"list_saved.csv")
restaurant_urls_li = restaurant_urls_li.iloc[:,-1:]
restaurant_urls_li = restaurant_urls_li.values.tolist()
print(restaurant_urls_li)
[['https://www.tripadvisor.com/Restaurant_Review-g187849-d13392251-Reviews-Kisen_Moscova-Milan_Lombardy.html'], ['https://www.tripadvisor.com/Restaurant_Review-g187849-d17805000-Reviews-Mabuhay_Restaurant-Milan_Lombardy.html'],['https://www.tripadvisor.com/Restaurant_Review-g187849-d13392251-Reviews-Kisen_Moscova-Milan_Lombardy.html'], ['https://www.tripadvisor.com/Restaurant_Review-g187849-d17805000-Reviews-Mabuhay_Restaurant-Milan_Lombardy.html'],['https://www.tripadvisor.com/Restaurant_Review-g187849-d13392251-Reviews-Kisen_Moscova-Milan_Lombardy.html'], ['https://www.tripadvisor.com/Restaurant_Review-g187849-d17805000-Reviews-Mabuhay_Restaurant-Milan_Lombardy.html']]
for restaurant_url in restaurant_urls_li[0:20]:
print(restaurant_url)
wd.get(restaurant_url)
Сообщение об ошибке:
InvalidArgumentException Traceback (most recent call last)
<ipython-input-34-29d9690b9e31> in <module>()
1 for restaurant_url in restaurant_urls_li[start:end]:
----> 2 wd.get(restaurant_url)
3 tree = html.fromstring(wd.page_source)
4 restaurant = tree.xpath('//div[contains(@id,"taplc_top_info")]')[0]
5 try:
2 frames
/usr/local/lib/python3.7/dist-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
240 alert_text = value['alert'].get('text')
241 raise exception_class(message, screen, stacktrace, alert_text)
--> 242 raise exception_class(message, screen, stacktrace)
243
244 def _value_or_default(self, obj, key, default):
InvalidArgumentException: Message: invalid argument: 'url' must be a string
Я не вижу, что не так
Комментарии:
1. Каждый
restaurant_url
из них представляет собой список с одной строкой в нем , а не строкой.2. Это не строка, это список, содержащий строку
Ответ №1:
Поскольку каждый restaurant_url
из них представляет собой список, содержащий одну строку, вы можете получить к нему доступ, просто обратившись к первому элементу этого списка.
for restaurant_url in restaurant_urls_li[0:20]:
wd.get(restaurant_url[0])