python每日一题:采用正则表达式,beautifulsoap,xpath爬取网站数据

1.采用beautifusoap获取网站信息:

import urllib. request
from bs4 import BeautifulSoup
from lxml import etree
html = 'http://www.000.com'
s=urllib.request.urlopen(html)
soap=BeautifulSoup(s,'lxml')
b=soap.div
sa=soap.find_all("div",id='u1')

soap1=BeautifulSoup(str(sa),'lxml')
for i in soap1.div:
    print(i.string)
sb=soap.map.area['href']
print(sb)
s=urllib.request.urlopen('http:'+sb)
print(s.read().decode())

  调试结果:获取百度网站的一些关键字:新闻、地图、视频等,并提取源图片的网站。

2.采用xpath获取网站信息:

import urllib.request
from bs4 import BeautifulSoup
from lxml import etree
html = 'http://www.000.com'
web= urllib.request.urlopen(html)
con=web.read()
s=etree.HTML(con,etree.HTMLParser())
s1=s.xpath('//*[@id="u1"]/a/text()')
s2=s.xpath('//map/area/@href')
print(s1)
print(s2)

  调试结果:

['新闻', '000', '000', '视频', '00', '学术', '登录', '设置', '更多产品']
['//www.000.com/s?wd=%E4%BB%8A%E6%97%A5%E6%96%B0%E9%B2%9C%E4%BA%8B&tn=SE_PclogoS_8whnvm25&sa=ire_dl_gh_logo&rsv_dl=igh_logo_pcs']

 爬虫实例:

import urllib.request
from bs4 import  BeautifulSoup
import json
http='http://www.0000.com/'
reques=urllib.request.urlopen(http)
list=[]
data=reques.read()
soap=BeautifulSoup(data,'html.parser')
for j in soap.find_all(class_='mulu'):
    s=j.find('h2')#各书籍的大标题
    list1 = []
    if s!=None:
        for i in j.find_all('a'):#小标题
            name = i.string
            href = i.get('href')
            time = i.get('title')
            list1.append({'name': name, 'href': href, 'time': time})
        list.append({s.string: list1})
file=open('exam.json','w',encoding='utf-8')
jsondata=json.dump(list,file,ensure_ascii=False,indent=4)#将抓取的数据写入文件
file1=open('exam.json','r',encoding='utf-8')
data2=json.load(file1)#读出数据
for i in data2:
    print(i)

调试结果:由于数据太大,只展示开头的数据。

{'盗墓笔记1七星鲁王宫': [{'name': '七星鲁王 第一章 血尸', 'href': 'http://0000.com/biji1/1.html', 'time': '[2012-5-19 3:3:52] 七星鲁王 第一章 血尸'},
原文地址:https://www.cnblogs.com/xuehaiwuya0000/p/10455549.html