Почему Python Beautiful Soup удаляет параметры из очищенного URL - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь очистить этот сайт с помощью Python BeautifulSoup.И мой код ниже сначала выбирает все ссылки со страницы.При получении ссылок он удаляет амперсанды и параметры из исходной ссылки.Интересно, почему?Кто-нибудь знает?У меня есть код здесь вместе с выводом.

from bs4 import BeautifulSoup as bs
import requests

url = requests.get ("http://mnregaweb4.nic.in/netnrega/demand_emp_demand.aspx?lflag=eng&file1=dmd&fin=2017-2018&fin_year=2017-2018&source=national&Digest=x44uSVqhiyzomN66Te0ELQ")
soup = bs(url.text, 'xml')
state= soup.find(id = "t1")
state_links = []
for link in soup.find_all('a', href= True):

    state_links.append(link['href'])
    state_links = [e for e in state_links if e not in ("javascript:history.go(-1);", "http://164.100.129.6/netnrega/MISreport4.aspx?fin_year=2013-2014rpt=RP&source=national", "javascript:__doPostBack('ctl00$ContentPlaceHolder1$LinkButton1','')")]

for dis_link in state_links:
    # print (dis_link)
    link_new = "http://mnregaweb4.nic.in/netnrega/"+dis_link
    print (link_new)

Вывод:

Фактическая ссылка: http://mnregaweb4.nic.in/netnrega/demand_emp_demand.aspx?file1=dmd&page1=s&lflag=eng&state_name=ANDHRA+PRADESH&state_code=02&fin_year=2017-2018&source=national&Digest=4jL5hchs+iT7xqB6T/UXzw

(выделенный элемент кода отсутствует в очищенной ссылке)

Очищенная ссылка: http://mnregaweb4.nic.in/netnrega/demand_emp_demand.aspx?file1=dmd=s=eng=ANDHRA+PRADESH=02=2017-2018=national=4jL5hchs+iT7xqB6T/UXzw

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Это может быть потому, что вы пытаетесь проанализировать его с помощью 'xml', вместо этого попробуйте проанализировать его с помощью 'html.parser',

Я получаю следующий результат с кодом ниже:

from bs4 import BeautifulSoup as bs
import requests

url = requests.get ("http://mnregaweb4.nic.in/ne....")
soup = bs(url.text, 'html.parser')
state_links = []
for link in soup.find_all('a', href=True):
    state_links.append(link['href'])

print(state_links)
# 'demand_emp_demand.aspx?file1=dmd&page1=s&lflag=eng&state_name=ANDHRA+PRADESH&state_code=02&fin_year=2017-2018&source=national&Digest=4jL5hchs+iT7xqB6T/UXzw'
0 голосов
/ 13 июня 2018

Эта проблема касается парсера, используемого в Beautifulsoup.

Попробуйте с

soup = bs(url.text, 'html.parser')

или

soup = bs(url.text, 'lxml')

Возможно, вам потребуется установить какой-то конкретный парсер, см.эта глава документа .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...