Short answer:
- Scrapy / Parsel selectors
.re()and .re_first()replace HTML objects (except <, &) .extract() .extract_first(), HTML ( JavaScript) Python re
:
JavaScript HTML.
HTML:
<html lang="en">
<body>
<div>
<script type="text/javascript">
var i = {a:['O'Connor Park']}
</script>
</div>
</body>
</html>
scrapy, parsel, Javascript:
>>> import scrapy
>>> t = """<html lang="en">
... <body>
... <div>
... <script type="text/javascript">
... var i = {a:['O'Connor Park']}
... </script>
...
... </div>
... </body>
... </html>
... """
>>> selector = scrapy.Selector(text=t, type="html")
>>>
>>>
>>> selector.xpath('//div/script').extract_first()
u'<script type="text/javascript">\n var i = {a:[\'O'Connor Park\']}\n </script>'
>>>
>>>
>>> selector.xpath('//div/script/text()').extract_first()
u"\n var i = {a:['O'Connor Park']}\n "
>>>
, .re ( .re_first), :
>>>
>>>
>>>
>>> selector.xpath('//div/script/text()').re_first('.+')
u" var i = {a:['O'Connor Park']}"
>>>
>>>
>>> selector.xpath('//div/script').re_first('.+')
u'<script type="text/javascript">'
>>> import re
>>> selector.xpath('//div/script').re_first(re.compile('.+', re.DOTALL))
u'<script type="text/javascript">\n var i = {a:[\'O\'Connor Park\']}\n </script>'
>>>
HTML ' apostrophe. w3lib.html.replace_entities() .re/re_first (. parsel , extract_regex), extract() extract_first()