2.1获取网页源代码
import requests
from random import randint
import time
def getHTMLText(url):
while True:
try:
r = requests.get(url, timeout = 30)
r.encoding = r.apparent_encoding
return r.text
except Exception as e:
print(e)
print("重新连接...")
time.sleep(randint(1,3))
这里加入了try/except,如果出现了如网页连接超时,网络中断等问题时,会输出不能成功抓取的原因,并随机休息1-3秒,而加入while True则保证了未成功抓取时会一直反复尝试,直到成功。
2.2抓取一个网页的信息
我们在源代码中查找相应的信息所在的位置,并用正则表达式匹配出来:
def gethtmlinfo(url):
html = getHTMLText(url)
data = {} data['title'] = re.findall(r'(.*?)
', str(html))[0]
data['laiyuan'] = re.findall(r'来源:(.*?)', html)[0]
data['zuozhe'] = re.findall(r'作者:(.*?)', html)[0]
data['fabu'] = re.findall(r'发布日期:(.*?)', html)[0]
data['liulan'] = re.findall(r'浏览数:(\d+)', html)[0]
data['neirong'] = re.sub(r'<.>|[\r\n\u3000]','',re.findall(r'(.*?)
',html,re.S)[
0])
data[
'tupian'] =
'http://www.cgw.gr' + re.findall(
r', html)[0]
return(data)值得注意的是,查看新闻内容的源代码,每一段内容都是分开给出的。

因此在抓取内容时,我们添加参数:re.S,它的作用使得“.”能匹配的范围扩展到整个字符串,包括“\n”,也就是说它可以跨行进行匹配。由于使用正则匹配出来的结果以列表显示,所以以[0]选出字符串,另外,re.sub(r'<.>|[\r\n\u3000]','',html)表示将制定字符串替换为空。另外,由于源代码中图片给出的链接不完整,因此将其补全。
最后输出结果为:

构建一个函数pymysql将数据传到xizhongwang这个表中。
def pymysql(data):
table = 'xizhongwang'
keys = ','.join(data.keys())
values = ', '.join(['%s'] * len(data))
cursor = db.cursor()
sql = 'replace INTO {table} ({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
try:
if cursor.execute(sql, tuple(data.values())):
print('Successful')
db.commit()
except:
print('Failed')
db.rollback()
我们会在程序运行结果窗口看到“Successful”,然后再去MySQL中看看我们的数据是否传到xizhongwang表:

注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
往期推文推荐:
1.爬虫俱乐部新版块--和我们一起学习Python
2.hello,MySQL--Stata连接MySQL数据库
3.hello,MySQL--odbcload读取MySQL数据
4.再爬俱乐部网站,推文目录大放送!
5.用Stata生成二维码—我的心思你来扫
6.Mata中的数据导出至Excel
7.
谈谈图形中坐标设置的技巧
8.如何输出某个关键词在字符串中的所有位置?
9.想看什么书?Stata君帮你寻!——爬取中南财大图书馆书目信息
10.爬虫俱乐部隆重推出网上直播课程第一季
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。