每次正则都有从头看一遍,
想了一个多小时了。
就把标题给正则出了
还有标题下下面的网址求问如何弄出来?
"title_hide": "给你的键盘加上无线 PPT 控制功能吧",
"date_modified": "2013-05-24T11:23:42.260648+08:00",
"url": "
http://www.guokr.com/article/437046/",
"title": "给你的键盘加上无线 PPT 控制功能吧",
"small_image": "
http://2.im.guokr.com/BFnIhI2uKOFbTt44KurAN3zMyaJjXmao9OciN4ayjkLgAQAASQEAAEpQ.jpg",
"summary": "这个项目也是一个很好的焊接技巧入门练习。",
"ukey_author": "m4tq2j",
"date_created": "2013-05-24T11:19:42.252645+08:00",
"resource_url": "
http://apis.guokr.com/minisite/article/437046.json"
上面代码是 json 一角,需要的部分是 title_hide ,这个已解出,另一个部分是下下行的 url.
这是我写的代码:
import requests
import re
import json
from bs4 import BeautifulSoup
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
def gker(url):
html=requests.get(url, headers=headers).text
return html
j=gker('
http://www.guokr.com/apis/minisite/article.jsonretrieve_type=by_subject&subject_key=diy&limit=20&offset=18&_=1484373021355')
j2=str(json.loads(j)) #必须转换成字符串才能正则匹配。
titles=re.findall(r"(?<='title_hide':).*?(?=,)",j2,re.M)
print(len(titles))
for title in titles:
print(title)
urls=re.findall(r"'url':(.*?),.?'title'",j2,re.M) #这里不对,不知道如何弄出来了
print(len(urls),urls)
Yinz
2017-01-14 23:18:44 +08:00
如果不要求一定用正则的话, json 直接读成 dict 就好了,如 3 、 5 楼所说
j2=str(json.loads(j)) #必须转换成字符串才能正则匹配。
titles=re.findall(r"(?<='title_hide':).*?(?=,)",j2,re.M)
print(len(titles))
for title in titles:
print(title)
urls=re.findall(r"'url':(.*?),.?'title'",j2,re.M) #这里不对,不知道如何弄出来了
print(len(urls),urls)
上面这几行改成
j2=json.loads(j)
print(j2.get('title_hide'))
print(j2.get('url'))
应该就没问题的了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/334647
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.