前几天闲着没事新建了一个wordpress站点,想着用来转发一些IT资讯文章来赚流量(https://www.idealli.com)于是自己写了几个小爬虫用来爬取其他平台文章并且直接导入到自己的word press站点。
BeautifulSoup的使用
首先需要安装模块
$ pip install BeautifulSoup4 $ pip install requests
|
我感觉我这个模块使用的比较肤浅,只是用来find_all()
,基本上没有用上其他的函数,不过也够用了。
爬虫爬取后的数据处理无非也就是寻找指定标签,例如
from bs4 import BeautifulSoup import requests,sys
requests.adapters.DEFAULT_RETRIES = 5 s = requests.session() s.keep_alive = False try: req = s.get(url = link) bf = BeautifulSoup(req.text,"html.parser") s.close req.close
texts = bf.find(div,class_=article fmt article__content) origin = u"<p>来源:<a target=_blank href=" origin = origin.encode(utf-8) texts = str(texts) + origin + str(link) +" rel=noopener>" + str(link) + "</a></p>" title = bf.find(h1,id=articleTitle).find(a).text tim = 2019-01-19 20:20:20 author = bf.find(div, class_=article__authormeta).find(strong).text tag = bf.find(a,class_=tag).get(data-original-title) time.sleep(2) except: print(" ######################
error!
#######################") time.sleep(3)
|
以上主要就用到了find
函数
连接wordpress的数据库并导入
如果是本地端远程连接数据库,在python
连接数据库之前,首先要确定数据库是开放连接的,这个自行百度如何开放数据库的远程连接。
如果是服务器上执行爬虫,直接在服务器上导入数据库,那么就不用,连接地址直接就是localhost
数据库的连接需要导入第三方模块,我用的是pymysql
使用pymysql连接数据库
import pymysql
db = pymysql.connect(host=, user="", passwd=, db=)
cursor = db.cursor()
check_title="SELECT `ID` FROM `wp_posts` WHERE `post_title` = " + title + "" try: cursor.execute(check_title) except: print("error")
|
爬虫结构
整个爬虫就三个函数
-
一个是获取文章连接的函数,这个函数需要从特别的网页入口中获取网站的文章连接,一般可以是网站的标签页,文章连接比较多
-
第二个函数是文章内容的获取函数,将获取的文章html内容解析出来,得到自己想要的东西
-
第三个函数就是将获取的文章内容导入数据库
由于导入数据库时涉及多表的插入与查询,所以探索过程还是很麻烦的,要注意标签的插入,作者的插入,标签索引的插入,最重要的还有标签索引与文章id的关系表,如果没有这个表,文章将无法显示!!!
最后献上源码,放在GitHub,记得点颗star哦
https://github.com/flymysql/Post_to_wordpress