передать список в questions.get () - PullRequest
0 голосов
/ 10 апреля 2020

Это получает один URL и печатает его в формате XML.

import requests
from bs4 import BeautifulSoup

url = r'''https://secure.shippingapis.com/ShippingAPI.dll?API=Verify&XML=
          <AddressValidateRequest USERID="564WILLC0589"><Address><Address1>
          2451 Avalon Ct</Address1><Address2></Address2><City>Aurora</City>
          <State>IL</State><Zip5></Zip5><Zip4></Zip4></Address></AddressValidateRequest>'''

#get the webpage
response = requests.get(url)
#see if the URL has been correctly encoded
r_url = response.text

#parse the downloaded page to get a beautifulsoup object
new_xml = BeautifulSoup(r_url, features = "xml").prettify()
print(new_xml)‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

# prints

>>> 
<?xml version="1.0" encoding="utf-8"?>
<AddressValidateResponse>
 <Address>
  <Address2>
   2001 GARDNER CIR W
  </Address2>
  <City>
   AURORA
  </City>
  <State>
   IL
  </State>
  <Zip5>
   60503
  </Zip5>
  <Zip4>
   6213
  </Zip4>
 </Address>
</AddressValidateResponse>
>>>

Но у меня есть список URL, которые необходимо распечатать в формате XML. Используя этот список, как я могу передать по одному элементу за один раз в request.get ()? Ссылка на текстовый файл.

#text file that has all the URLs
txtfile = r'C:\Users\jpilbeam\USPSAPIWCHDUpdateAll.txt'

#convert text file into a list
with open (txtfile) as f:
    x = (list(map(str.strip ,f.readlines())))‍‍‍‍‍

1 Ответ

1 голос
/ 11 апреля 2020
import requests
from bs4 import BeautifulSoup

# convert text file into a list 
def file_to_list(file_name):
    with open (file_name) as f:
        return list(map(str.strip ,f.readlines()))


def scrape(url):
    response = requests.get(url)
    new_xml = BeautifulSoup(response.text, "html.parser")
    print(new_xml)

txtfile = r'C:\Users\jpilbeam\USPSAPIWCHDUpdateAll.txt'
links = file_to_list(txtfile)
for link in links:
    scrape(link )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...