目标:爬取url为"https://ebooks.adelaide.edu.au/meta/collections"的网站目录下的所有文件下载链接(每个标题点开后的界面最下方的下载链接)
初始思路:首先爬取首个HTML下的内容,使用xpath过滤出接下来需要爬取的url并进行拼接,然后再次使用遍历爬取后存入MongoDB(这个思路是在没有彻底分析需要下载的数据时预想的,爬取过程繁琐,优化见下面)
import urllib.request from lxml import etree from bs4 import BeautifulSoup from pymongo import MongoClient import random import hashlib import time
url="https://ebooks.adelaide.edu.au/meta/collections"#爬取的url result=urllib.request.urlopen(url)#获得的是一个对象 text=(result.read()).decode("utf-8")#转换为文本 # file=open("web.text","wb")#bs4可以直接解析本地文档 # file.write(result.read()) # file.close() html=etree.HTML(text) # result=etree.tostring(html)#自动补全html残缺标签(转换为字节) # html_data=html.xpath('/html/body/div/div/div//div/ol/li/a/@href')#以列表形式返回,获取url数据 html_data=html.xpath('//ol//a/@href')#上面的简写为此 # def