2017-10-16 135 views
-3

我是python的新手,我需要帮助才能抓取某个关键字的所有链接。问题是,我发现了以下错误:python scrape links关键字

if "air-max" in link["href"]: ^ IndentationError: expected an indented block.

这里是我的代码

import requests 
import time 
from bs4 import BeautifulSoup 

headers = {"Content-Type": "application/x-www-form-urlencoded; 
charset=UTF-8","X-Requested-With": "XMLHttpRequest","User-Agent": 
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, 
like Gecko) Chrome/56.0.2924.87 Safari/537.36"} 

for i in range(0,4): 
url = "https://www.aw-lab.com/shop/uomo/scarpe?p={}".format(i) 
r = requests.get(url) 
soup = BeautifulSoup(r.content, "html.parser") 

all_links = soup.find_all("a") 
for link in all_links: 
if link.has_key('href'): 
if "air-max" in link["href"]: 
    print(link["href"]) 
+2

您必须缩进您的代码。确保你遵循风格,检查是否在正确的地方有空格或制表符。 – lll

回答

-1

请使用像spyder IDE或jupyter notebook开发IDE。

import requests 
import time 
from bs4 import BeautifulSoup 

headers = {"Content-Type": "application/x-www-form-urlencoded; 
charset=UTF-8","X-Requested-With": "XMLHttpRequest","User-Agent": 
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, 
like Gecko) Chrome/56.0.2924.87 Safari/537.36"} 

for i in range(0,4): 
    url = "https://www.aw-lab.com/shop/uomo/scarpe?p={}".format(i) 
    r = requests.get(url) 
    soup = BeautifulSoup(r.content, "html.parser") 

all_links = soup.find_all("a") 
for link in all_links: 
    if link.has_key('href'): 
     if "air-max" in link["href"]: 
      print(link["href"]) 
0

你需要link.has_key('href'):陆续缩进级别。另外,要一致;始终使用空格(首选)或始终使用制表符。这可能并非总是如此,但是,一般来说,如果在行尾有COLON :,则下一行应该进一步缩进一级。

for i in range(0,4): 
    url = "https://www.aw-lab.com/shop/uomo/scarpe?p={}".format(i) 
    r = requests.get(url) 
    soup = BeautifulSoup(r.content, "html.parser") 

    all_links = soup.find_all("a") 
    for link in all_links: 
     if link.has_key('href'): 
      if "air-max" in link["href"]: 
       print(link["href"])