用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

python网络数据采集14 wiki的标题和正文存进mysql

2018-12-24 作者:迅捷斥候举报

[python]代码库

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import random
import datetime
import pymysql
 
conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='12345',db='mysql',charset='utf8') # 所有发送到数据库的信息当成utf8
cur = conn.cursor()
cur.execute('use scrapying')
 
random.seed(datetime.datetime.now()) # seed设置生成随机数用的整数起始值
def store(title,content):
    cur.execute("insert into pages (title,content) values (\"%s\",\"%s\")",(title,content))
    cur.connection.commit() # 提交事务
 
def getLinks(articleUrl):
    html = urlopen("http://en.wikipedia.org"+articleUrl)
    bsObj = BeautifulSoup(html,'html.parser')
    title = bsObj.find('h1').get_text() # 得到所有标题文本
    content = bsObj.find("div",{"id":"mw-content-text"}).find("p").get_text() # 得到包含正文的div标签
    store(title,content) # 将标题和内容文本存入数据库
    return bsObj.find("div", {"id":"bodyContent"}).findAll("a",href = re.compile("^(/wiki/)((?!:).)*$")) # .号匹配出了换行符之外的任何字符
 
links = getLinks("/wiki/Kevin_Bacon")
try:
    while len(links) > 0: # 如果有/wiki/开头的链接存在
        newArticle = links[random.randint(0,len(links)-1)].attrs["href"] # 在所有/wiki/开头的连接中随机取一个
        print(newArticle)
        links = getLinks(newArticle)
finally:
    cur.close()
    conn.close()


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。