这里,x是一个介于1到200000之间的数字。我想运行一个循环来获取所有URL并使用漂亮的汤从每个URL中提取内容。
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
content = urlopen(re.compile(r"https://example.net/users/[0-9]//"))
soup = BeautifulSoup(content)
这是正确的做法吗?我必须做两件事。
更新
我只能从每个网页中获取一个特定值。
soup = BeautifulSoup(content)
divTag = soup.find_all("div", {"class":"classname"})
for tag in divTag:
ulTags = tag.find_all("ul", {"class":"classname"})
for tag in ulTags:
aTags = tag.find_all("a",{"class":"classname"})
for tag in aTags:
name = tag.find('img')['alt']
print(name)
答案 0 :(得分:1)
你可以试试这个:
import urllib2
import shutil
urls = []
for i in range(10):
urls.append(str('https://www.example.org/users/' + i))
def getUrl(urls):
for url in urls:
# Only a file_name based on url string
file_name = url.replace('https://', '').replace('.', '_').replace('/', '_')
response = urllib2.urlopen(url)
with open(file_name, 'wb') as out_file:
shutil.copyfileobj(response, out_file)
getUrl(urls)
答案 1 :(得分:0)
如果您只需要网页的内容,则可以使用lxml
,您可以从中解析内容。类似的东西:
from lxml import etree
r = requests.get('https://example.net/users/x')
dom = etree.fromstring(r.text)
# parse seomthing
title = dom.xpath('//h1[@class="title"]')[0].text
此外,如果您正在搜索数千页的10或100页,您可能希望查看类似grequests的内容,您可以在其中执行多个异步HTTP请求。