Python-bs4-webscraping-无法从网站获取整个URL

Python-bs4-webscraping-无法从网站获取整个URL,python,beautifulsoup,Python,Beautifulsoup,我正在尝试从网站上删除广告的URL链接。 我在jupyter笔记本中有以下代码 from bs4 import BeautifulSoup import requests link = "https://www.marktplaats.nl/l/auto-s/bmw/p/1/" data = requests.get(link) soup = BeautifulSoup(data.content,"html.parser") ​ car1 = soup.findAll('li',{'class'

我正在尝试从网站上删除广告的URL链接。 我在jupyter笔记本中有以下代码

from bs4 import BeautifulSoup
import requests
link = "https://www.marktplaats.nl/l/auto-s/bmw/p/1/"
data = requests.get(link)
soup = BeautifulSoup(data.content,"html.parser")
​
car1 = soup.findAll('li',{'class':'mp-Listing mp-Listing--list-item'})[0]
​
car1.a['href']
运行此代码时,我会得到以下url:

'/a/auto-s/bmw/a1322384400-bmw-x5-s-drive-executive-automaat-leder-navigatie-nr-038.html'
我认为这是一个相对的URL,而不是完整的URL。 当我检查页面时,我确实看到了这个URL,但是当我把鼠标放在上面时,我看到了整个URL。 我想刮整个网址,有人能帮我吗

我添加了两幅图片,一幅显示短端URL,另一幅显示完整URL 缩短的URL图像:

完整URL图像:

将我的答案添加注释,以便将问题标记为已回答:)。这不是相对URL,而是绝对URL(因为它从根文件夹开始,以正斜杠开始)。要获得完整的url,只需在前面添加域名,以便“+car1.a['href']

将我的答案添加注释,以便将问题标记为已回答:)。这不是相对URL,而是绝对URL(因为它从根文件夹开始,以正斜杠开始)。要获取完整的url,只需在前面添加域名,以便“+car1.a['href']

如果您使用的是Python 3,您可以使用加入
链接中的基本url和
car1.a['href']
中的路径

car1.a['href']
是相对路径,因为绝对URI以协议/方案或双斜杠开始

如果url是一个绝对url(即,以
/
scheme://
开头),则

/a/auto-s/..
中的起始单条
/
表示链接相对于主机的根,而不是从您看到它的页面的当前路径。(当前页面的路径是
/l/auto-s/bmw/p/1/

总括起来:

>>> import urllib
>>>
>>> car_url = urllib.parse.urljoin(link, car1.a['href'])
>>> car_url
'https://www.marktplaats.nl/a/auto-s/bmw/a1322384400-bmw-x5-s-drive-executive-automaat-leder-navigatie-nr-038.html'
>>>
>>> car_page = requests.get(car_url).content
>>> car_soup = BeautifulSoup(car_page, 'html.parser')
>>> car_soup.title.text
'≥ BMW X5 S-Drive Executive Automaat Leder Navigatie - Nr 038 - BMW - Marktplaats.nl'
>>>

如果您使用的是Python3,则可以使用来连接
链接中的基本URL和
car1.a['href']
中的路径

car1.a['href']
是相对路径,因为绝对URI以协议/方案或双斜杠开始

如果url是一个绝对url(即,以
/
scheme://
开头),则

/a/auto-s/..
中的起始单条
/
表示链接相对于主机的根,而不是从您看到它的页面的当前路径。(当前页面的路径是
/l/auto-s/bmw/p/1/

总括起来:

>>> import urllib
>>>
>>> car_url = urllib.parse.urljoin(link, car1.a['href'])
>>> car_url
'https://www.marktplaats.nl/a/auto-s/bmw/a1322384400-bmw-x5-s-drive-executive-automaat-leder-navigatie-nr-038.html'
>>>
>>> car_page = requests.get(car_url).content
>>> car_soup = BeautifulSoup(car_page, 'html.parser')
>>> car_soup.title.text
'≥ BMW X5 S-Drive Executive Automaat Leder Navigatie - Nr 038 - BMW - Marktplaats.nl'
>>>

这不是相对URL,而是绝对URL(因为它从根文件夹开始,以正斜杠开始)。要获得完整的url,只需在前面添加域名,以便
”https://www.martkplaats.nl“+car1.a['href']
非常感谢您的帮助。这解决了我的问题。这不是一个相对URL,而是一个绝对URL(因为它从根文件夹开始,以正斜杠开始)。要获得完整的url,只需在前面添加域名,以便
”https://www.martkplaats.nl“+car1.a['href']
非常感谢您的帮助。这解决了我的问题。