今、私はすべてのURLをウェブページから削り取ろうとしました。それは完全に5つのカテゴリを持ち、すべてのカテゴリは異なるページを持っています(すべてのページに10の記事があります)。例えば次のページのURLをPythonで取得
:
Categories Pages
Banana 5
Apple 14
Cherry 7
Melon 6
Berry 2
コード:
import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import urljoin
res = requests.get('http://www.abcde.com/SearchParts')
soup = BeautifulSoup(res.text,"lxml")
href = [ a["href"] for a in soup.findAll("a", {"id" : re.compile("parts_img.*")})]
b1 =[]
for url in href:
b1.append("http://www.abcde.com"+url)
print (b1)
のメインページから "http://www.abcde.com/SearchParts" 私はすべてのカテゴリの最初のページのURLをこすりすることができます。 b1は最初のページのURLのリストです。
Categories Pages url
Banana 1 http://www.abcde.com/A
Apple 1 http://www.abcde.com/B
Cherry 1 http://www.abcde.com/C
Melon 1 http://www.abcde.com/E
Berry 1 http://www.abcde.com/F
その後、私は、次のページのURLを掻き取るB1のソースコードを使用します。このよう
。 b2は第2ページのURLのリストです。
コード:このように
b2=[]
for url in b1:
res2 = requests.get(url).text
soup2 = BeautifulSoup(res2,"lxml")
url_n=soup2.find('',rel = 'next')['href']
b2.append("http://www.abcde.com"+url_n)
print(b2)
:私は第三いずれかを実行しようとするとベリーの2ページ目が最後のページであるため、
Categories Pages url
Banana 1 http://www.abcde.com/A/s=1&page=2
Apple 1 http://www.abcde.com/B/s=9&page=2
Cherry 1 http://www.abcde.com/C/s=11&page=2
Melon 1 http://www.abcde.com/E/s=7&page=2
Berry 1 http://www.abcde.com/F/s=5&page=2
は今、それは誤りだ、それは「次を持っていません"ソースコード内にあります。すべてのカテゴリに異なるページやURLがある場合、特に何をすべきですか?
コード全体(それがエラーを得たまで):
import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import urljoin
res = requests.get('http://www.ca2-health.com/frontend/SearchParts')
soup = BeautifulSoup(res.text,"lxml")
href = [ a["href"] for a in soup.findAll("a", {"id" : re.compile("parts_img.*")})]
b1 =[]
for url in href:
b1.append("http://www.ca2-health.com"+url)
print (b1)
print("===================================================")
b2=[]
for url in b1:
res2 = requests.get(url).text
soup2 = BeautifulSoup(res2,"lxml")
url_n=soup2.find('',rel = 'next')['href']
b2.append("http://www.ca2-health.com"+url_n)
print(b2)
print("===================================================")
b3=[]
for url in b2:
res3 = requests.get(url).text
soup3 = BeautifulSoup(res3,"lxml")
url_n=soup3.find('',rel = 'next')['href']
b3.append("http://www.ca2-health.com"+url_n)
print(b3)
そして私は、このページからすべてのURLを持つことになりますので、この後、私はリストとしてB1、B2、B3と...を行います。前もって感謝します。