import requests
import csv
from bs4 import BeautifulSoup
page = requests.get("https://www.google.com/search?q=cars")
soup = BeautifulSoup(page.content, "lxml")
import re
links = soup.findAll("a")
with open('aaa.csv', 'wb') as myfile:
for link in soup.find_all("a",href=re.compile("(?<=/url\?q=)(htt.*://.*)")):
a = (re.split(":(?=http)",link["href"].replace("/url?q=","")))
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(a)
此代码的输出是我有一个 CSV 文件,其中保存了 28 个 URL,但这些 URL 不正确。例如,这是一个错误的 URL:-
应该是:-
http://www.imdb.com/title/tt0317219/
如果每个 URL 包含 "&sa="
因为 URL 的第二部分开始于:- "&sa=" 应该被删除,这样所有的 URL 都像第二个 URL 一样被保存。
我正在使用 python 2.7 和 Ubuntu 16.04。
请您参考如下方法:
如果每次 url 的冗余部分都以 & 开头,您可以对每个 url 应用 split():
url = 'http://www.imdb.com/title/tt0317219/&sa=U&ved=0ahUKEwjg5fahi7nVAhWdHsAKHSQaCekQFgg9MAk&usg=AFQjCNFu_Vg9v1oVhEtR-vKqCJsR2YGd2A'
url = url.split('&')[0]
print(url)
输出:
http://www.imdb.com/title/tt0317219/
