Hello Everyone,我是初学者,我尝试在网页抓取中使用带有url链接的IF ELSE功能。
我想选择de部门64到66的所有页面。
我的网址是:http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/{}/0({} = 64或65或66)。
我的循环工作并选择64的所有页面。但是当我在65里面时,我看到我只有一页,所以我的代码行last_page = soup.find('ul', class_='pagination').find('li', class_='next').a['href'].split('=')[1]
无法工作。在这里我的代码:
import requests
from bs4 import BeautifulSoup
url_list = ['http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/{}/0']
for link in url_list:
r=requests.get(link)
soup = BeautifulSoup(r.content, "html.parser")
page_Url_test=[link.format(i) for i in range(64, 66)]
for depart_page in page_Url_test:
depart_page1=str(depart_page)+"?page={}"
r=requests.get(depart_page1)
soup = BeautifulSoup(r.content, "html.parser")
last_page = soup.find('ul', class_='pagination').find('li', class_='next').a['href'].split('=')[1]
dept_page_Url=[depart_page1.format(i) for i in range(0, int(last_page)+1)]
print(dept_page_Url)
我试图加入这样的IF ELSE:
for depart_page in page_Url_test:
depart_page1=str(depart_page)+"?page={}"
r=requests.get(depart_page1)
soup = BeautifulSoup(r.content, "html.parser")
if len(depart_page1) == 0 :
dept_page_Url=depart_page1
else:
last_page = soup.find('ul', class_='pagination').find('li', class_='next').a['href'].split('=')[1]
dept_page_Url=[depart_page1.format(i) for i in range(0, int(last_page)+1)]
print(dept_page_Url)
但它没有用。我怎么能对我的代码说:如果我只有一个页面选择第一个,那么我的下一步呢? 任何线索?我没有足够的知识可以独自找到...... 非常感谢
答案 0 :(得分:1)
正如先生t.m.adam已经指出的那样,你可以尝试以下方法。我也修剪了你的代码,使其简洁。
import requests
from bs4 import BeautifulSoup
url_list = 'http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/{}/0'
for link in [url_list.format(page) for page in range(64,67)]:
res = requests.get(link)
soup = BeautifulSoup(res.text,"lxml")
depart_page = str(link) + "?page={}"
if soup.find('ul', class_='pagination'):
last_page = soup.find('ul', class_='pagination').find('li', class_='next').a['href'].split('=')[1]
dept_page_Url = [depart_page.format(i) for i in range(0, int(last_page)+1)]
print(dept_page_Url)
需要时的其他方法:
if soup.find('ul', class_='pagination'):
last_page = soup.find('ul', class_='pagination').find('li', class_='next').a['href'].split('=')[1]
dept_page_Url = [depart_page.format(i) for i in range(0, int(last_page)+1)]
print(dept_page_Url)
else:
print(link)
结果:
['http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/64/0?page=0', 'http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/64/0?page=1', 'http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/64/0?page=2']
['http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/66/0?page=0', 'http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/66/0?page=1', 'http://www.pour-les-personnes-agees.gouv.fr/annuaire-accueil-de-jour/66/0?page=2']