好友
阅读权限10
听众
最后登录1970-1-1
|
比较简单的爬取一些世界网址,源站点是一个收录站点,有很多不错的网站,以下代码会把全站收录的网站保存到db数据文件内
可以下载安装 SQLite Expert Personal 打开 比较方便
新手学习, 求大佬指点
有免费评分的,可以的话,动动小手给个评分,谢谢
[Python] 纯文本查看 复制代码 import requestsimport os
from lxml import etree
from fake_useragent import UserAgent
import sqlite3
import time
# 设置 请求头
def RquestTools(url):
headers = {
'User-Agents': str(UserAgent().random)
}
response = requests.get(url, headers=headers).content.decode('gbk')
html = etree.HTML(response)
return html
#sqlite3字符处理,因为有些符号影响sqlite命令行,所以需要处理
def str_finishing(seif):
str_temp = seif
str = str_temp.replace("/","//")
str = str.replace("\'","''")
str = str.replace("[","/[")
str = str.replace("]","/]")
str = str.replace("%","/%")
str = str.replace("_","/_")
str = str.replace("(","/(")
str = str.replace(")","/)")
return str
# 设置请求网址
url = 'http://www.world68.com/country.asp'
# 获取url资源
html = RquestTools(url)
# 定位国家名称
country = html.xpath('//div[@class="content_all r"]/dl/dd/a[1]/text()')
# 定位国家地址
country_url = html.xpath('//div[@class="content_all r"]/dl/dd/a[1]/@href')
conn = sqlite3.connect("E:\\worldurl.db") # 获取或创建数据库链接
litec = conn.cursor() # 获取游标
for i, c in zip(country, country_url):
sqltable = 'create table ' + i + '(urltype,urlname,urladdress,urlintroduce)'
#print(str(sqltable))
litec.execute(str(sqltable))#创建国家表\类型标签
corntry_html = RquestTools(c)
cont_r_sort_c = corntry_html.xpath('//div[@class="content_r_sort_c"]/ul/li/a/text()')
cont_r_sort_c_url = corntry_html.xpath('//div[@class="content_r_sort_c"]/ul/li/a/@href')
for v, m in zip(cont_r_sort_c, cont_r_sort_c_url):
tryhtml = RquestTools(m)
urls = tryhtml.xpath('//dl[@class="top_page"]/dt/a/@href')
for ii in urls:
tryhtm2 = RquestTools(ii)
#网站名称
country_name = "".join(tryhtm2.xpath('//div[@class="name_r r"]/a/text()'))
country_name = str_finishing(country_name)
#网站地址
country_url = "".join(tryhtm2.xpath('//div[@class="name_r r"]/a/@href'))
#网站简介
country_lits = "".join(tryhtm2.xpath('//div[@class="jianjie_r r"]/p/text()'))
country_lits = str_finishing(country_lits)
sqladd = 'insert into ' + i + ' values (\'' + v + '\',\'' + country_name + '\',\'' + country_url + '\',\'' + country_lits + '\')'
print(str(sqladd))
litec.execute(str(sqladd))#新增 表单数据(网站类型\网站名称\网站Url\网站简介)
conn.commit()# 提交修改事务
#关闭资料
litec.close()
conn.close()
|
免费评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 源码系列|主题: 64, 订阅: 25
- · 代码|主题: 2, 订阅: 0
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|