发布并单击后如何剪贴和解析页面?

时间:2019-06-27 08:08:16

标签: python parsing scrapy

我想用python写一个小的代码来每天检查包裹。在网页(https://www.internationalparceltracking.com/#/search中进行查询时,URL不变,因此无法通过URL发送查询。我尝试使用beautifulsoup和urllib,但无法获得回报。

在这里,我尝试了什么:

import requests
from bs4 import BeautifulSoup

url = 'https://www.internationalparceltracking.com/#/search'
html = urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")

r = requests.post(url=url, data={'placeholder':'3SABC1234567890'})
print(r.text)

最后,我不想使用硒(例如打开其他浏览器),查询是在地下进行的... 我正在等待您的建议

3 个答案:

答案 0 :(得分:2)

我转到了您发布的网址。我在表单中填写了一些虚拟数据,打开了Chrome开发者控制台->网络标签,并能够发现传出的GET请求:

curl 'https://www.internationalparceltracking.com/api/shipment?barcode=OEIOEWJOE4WO4UOI4O43U34&checkIfValid=true&country=US&language=en&postalCode=94107' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US,en;q=0.9' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36' -H 'Accept: application/json, text/plain, */*' -H 'Referer: https://www.internationalparceltracking.com/' -H 'Cookie: ROUTEID=route.2; TIN-Language=en; Ely_vID=vk51m7caca6fj45lhcauwgj67rg1cvsj' -H 'Connection: keep-alive' --compressed

鉴于此,我认为下面的代码可以(不必抓取):

import requests

payload = {
  'barcode': '3SABC1234567890',
  'country': 'US',
  'postalCode': 11111,
  'language': 'en',
  'checkIfValid': True
}

url = 'https://www.internationalparceltracking.com/api/shipment'
r = requests.get(url, params=payload)

print r.contents

答案 1 :(得分:1)

如果您查看浏览器的网络检查器(例如,在chrome上为Ctrl + shift + i),您会​​看到该网页正在对这样的页面进行简单的ajax请求:

https://www.internationalparceltracking.com/api/shipment?barcode=3SABC1234567890&checkIfValid=true&country=BS&language=en

现在只需将关键字参数值替换为您自己的值即可!

url = "https://www.internationalparceltracking.com/api/shipment?barcode={code}&checkIfValid=true&country={country}&language=en"
import requests

my_code = '12345'
my_country = 'US'
response = requests.get(url.format(code=my_code,country=my_country)
print(response.json())

答案 2 :(得分:1)

@FelizNaveedad提供的功能非常好。只是为了更清楚地说明这张图片

enter image description here

您可以按照以下路径进行操作:Chrome开发者控制台->网络标签-> XHR。并在网页上手动发布信息,然后您将在XHR上看到一些文件。您要查找的是从装运开始的文件。...

单击该文件,您将找到查询字符串参数。那就是您发布到浏览器并将其复制为代码作为参数的内容。

如果您想更具体地了解它,可以观看video,我认为它很有帮助。