【发布时间】:2017-12-07 17:31:09
【问题描述】:
大家好,我是初学者,我尝试在网页抓取中使用带有 url 链接的 IF ELSE 函数。
我想选择部门 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)
但它不起作用。我该如何对我的代码说:如果我只有一个页面,请选择第一个页面,否则执行下一步? 有什么线索吗?我没有足够的知识独自寻找...... 十分感谢
【问题讨论】:
-
第65页没有.pagination元素,所以你的条件应该是
if soup.find(class_='pagination'):
标签: python loops if-statement url web-scraping