我决定把我的评论变成答案。
如果您想成为专业人士,请使用诸如scrapy之类的框架。
就个人而言,我发现它们过于繁琐,并且我已经成功使用以下方法。我认为你的用例很简单,对你也有用。
假设您也使用 Python3,您可以轻松抓取网页,然后使用 XPath 表示法获取您想要的内容。
from lxml import html
import urllib.request
# keep running until there are no "next" pages
for page in range(999):
url = 'http://blablabla.com/?page=%d' % page
text = urllib.request.urlopen(url).read()
tree = html.fromstring(text)
images = tree.xpath('//img[@class="car"]/href()')
types = tree.xpath('//div[@class="type"]/text()')
if not images:
break
for i, (cartype, image) in enumerate(zip(types, images)):
urllib.request.urlretrieve(image, '%s-page%d-img%d.png' % (cartype, page, i))
(纯粹是说明性的例子。)
现在尽可能调整。XPath 是一种非常强大的访问 XML 节点的表示法。比我在这里写的要多得多。学习本教程以了解完整的 XPath 语法。
一些网页设计师使得访问任何你想要的东西变得更加困难,因为他们没有正确地class
-ify 他们的 HTML 对象。在这些情况下,您可能必须访问父节点并询问他们的子节点。或者访问兄弟姐妹,然后获取兄弟姐妹。无论如何,XPath 和 Python 的lxml
包使这一切变得异常简单。
任何现代浏览器(如 Chrome 和 Firefox)也可以让您轻松浏览任何网页的 DOM。只需右键单击并按检查或转到工具菜单中的开发人员工具或类似的东西。
注意:一些网站,例如scholar.google.com不允许使用爬虫,并且非常擅长检测您是否正在这样做。您可以为 urllib 指定一个用户代理,但这可能是徒劳的。即使是高级框架也可能无法为您提供帮助。
编辑:我发表了一篇博文,我在其中详细说明了一点。